django的csrf_token的原理
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,如果是,继续走视图函数里定义的代码.