用mysql和django做了一个网站,其中用户对数据库的操作只有查询,这种情况下数据库需要设置事务控制和隔离级别吗?

用mysql和django做了一个网站,其中用户对数据库的操作只有查询,这种情况下数据库需要设置事务控制和隔离级别吗?

数据库的事务隔离级别会影响你的查询结果,如果数据永远不会变,那就没影响

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/1053133
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Django连接数据库之原生SQL使用!如何在Django中使用原生MySQL? ✧*。٩(ˊᗜˋ*)و✧*。 Django初体验
  • 除此之外, 这篇博客: Django练习——基于Mysql的登录注册功能界面(django模型、模板、表单简单应用)中的 4.1先搭框架 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • (1)login,register,index模板
    在根目录templates文件(若没有该文件夹,则在项目根目录下创建该文件夹)下创建login.html,register.html,index.html文件,这里是博主的糊弄版界面:
    login.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>login</title>
    </head>
    <body>
    <form action="/login/" method="post">
        {% csrf_token %}
        <p>
        <p>用户名:<input type="text" name="user"></p>
        <p>密码:<input type="password" name="userpw"></p>
        <p><input type="submit" value="登录" name="sub">
            <input type="submit" value="注册" name="reg1"></p>
        </p>
    </form>
    
    <p>{{ rlt }}</p>
    </body>
    </html>
    

    register.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>register</title>
    </head>
    <body>
    <form action="/register/" method="post">
        {% csrf_token %}
        <p>
        <p>用户名:<input type="text" name="user"></p>
        <p>密码:<input type="text" name="userpw"></p>
        <p><input type="submit" value="注册" name="reg2">
            <input type="submit" value="返回" name="back"></p>
        </p>
    </form>
    
    <p>{{ rlt }}</p>
    </body>
    </html>
    

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>login successfully</title>
    </head>
    <body>
    <form>
        登录成功
    </form>
    </body>
    </html>
    

    此处应注意:
    1.提交数据时更常用POST方法(POST与GET区别参见https://blog.csdn.net/weixin_44251129/article/details/89522484
    2.模板的末尾,rlt 记号是为表格处理结果预留位置(登录成功or失败、注册成功or注册失败)
    3.{% csrf_token %}标签:csrf 全称是 Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。POST方法提交的表格,必须有此标签,不然会报错,与setting文件的中间件’django.middleware.csrf.CsrfViewMiddleware’对应。
    因此,注释掉该中间件就可以避免报错,django自带CSRF防护机制,也可以选择加个@csrf_exempt(from django.views.decorators.csrf import csrf_exempt)屏蔽装饰器。

    (2)视图与路由绑定
    首先搭建视图框架:在mine_login\views.py添加代码如下:

    # from django.shortcuts import render
    from django.shortcuts import render,redirect
    # Create your views here.
    def login(request):
        '''
        登录
        :param request:
        :return:
        '''
        return render(request,'login.html')
    def register(request):
        '''
        注册
        :param request:
        :return:
        '''
        return render(request,'register.html')
    

    然后在urls.py绑定视图:

    from django.contrib import admin
    from django.urls import path
    import mine_login.views as minelogin_views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('login/', minelogin_views.login),
        path('register/', minelogin_views.register),
    ]
    

    题外话:若Django框架下前后端分离,在urls.py配置接口,视图返回使用JsonResponse即可。

    效果如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    知识点:

    • render(request,template_name,…)

    必选参数:
    request:请求对象
    template_name: templates 中定义的文件, 要注意路径名. 如’templates\index.html’, 参数就要写‘index.html’
    可选参数:
    context:要添加到模板上下文的值的字典。 默认情况下,这是一个空的字典。 如果字典中的值是可调用的,则视图将在渲染模板之前调用它。
    content_type:生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。
    status:响应的状态代码默认为“200”。
    using:用于加载模板的模板引擎的 :setting:NAME

  • 您还可以看一下 王进老师的跟着王进老师学Python之Django篇第二季:数据库开发之原生SQL课程中的 Django中mysql驱动介绍小节, 巩固相关知识点