在说起表单提交发起POST请求之前,我需要聊一聊CSRF(跨站请求伪造),当然百度上一大堆CSRF的概念,我就用找到的一张图来说明这个概念吧.

所以Django为我们提供了一种用来防御它的非常容易使用的系统,简而言之,就是每次使用POST请求时都应该使用{ % csrf_token % }来避免CSRF.
知道这个防护原理也是必要的:
在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值。当用户提交django的表单时,服务器校验这个表单的csrftoken是否和自己保存的一致,来判断用户的合法性。当用户被csrf攻击从其他站点发送精心编制的攻击请求时,由于其他站点不可能知道隐藏的csrftoken字段的信息这样在服务器端就会校验失败,攻击被成功防御,这样就能避免被 CSRF 攻击。