用mysql和django做了一个网站,其中用户对数据库的操作只有查询,这种情况下数据库需要设置事务控制和隔离级别吗?
数据库的事务隔离级别会影响你的查询结果,如果数据永远不会变,那就没影响
(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即可。
效果如下:
知识点:
必选参数:
request:请求对象
template_name: templates 中定义的文件, 要注意路径名. 如’templates\index.html’, 参数就要写‘index.html’
可选参数:
context:要添加到模板上下文的值的字典。 默认情况下,这是一个空的字典。 如果字典中的值是可调用的,则视图将在渲染模板之前调用它。
content_type:生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。
status:响应的状态代码默认为“200”。
using:用于加载模板的模板引擎的 :setting:NAME
。