1 # csrf_token 标签
2 # 作用: django 自带的一个中间件,用在form标签上,用户校验当前提交的数据是否是 指定页面上提交的数据,跨站请求伪造保护的作用.
3
4 1,打开settings.py里面的csrftoken 功能(取消注释)
5 2,视图函数
6 def login(request):
7 if request.method == 'GET':
8 nk = ['a','b','c','d']
9 return render(request,'login.html',{ 'a1':nk })
10 else:
11 print(request.body)
12 return HttpResponse('POST 的请求方式')
13 3,模板文件
14 <form action="" method="post">
15 {% csrf_token %} # 这里加上 {% csrf_token %} 这句代码,表师启用 csrf_token
16 <h3>用户名: <input type="text" name="name"></h3>
17 <h3>密码: <input type="password" name="password"></h3>
18 <input type="submit">
19 </form>
20
21 # 请求流程:
22 # 客户端: web段:http://127.0.0.1:8000/login
23 # 服务端: 发送给客户端 一个login.html的页面,经过中间件的时候,中间件会在这个页面里加上一个隐藏的input标签,里面时csrf的 name和value
24 # 客户端: 收到了login.html的页面,开始填写表单,并点击submit 提交form表单,这里表单里包含了 隐藏的csrf的input的标签.
25 # 服务端: 收到客户端的提交的数据包,会首先在中间件层进行csrf_token的校验,看是否是本机生成的token,如果不是,直接403,如果是,继续走视图函数里定义的代码.
来源:oschina
链接:https://my.oschina.net/u/4380404/blog/4094290