django中使用CSRF出现403错误的解决办法
一.什么是 csrf ?
简单的说,它的中文名叫做“跨域请求伪造。复杂的可以看这里
二.Django中如何使用csrf?
2.1新手的常犯错误
如果你是初学Django,那你很可能会遇到这样一个问题——在前端用post请求传值的时候,莫名出现了以下错误…
1.上图中的箭头所指便是产生错误的主要原因——“CSRF验证失败,请求被丢弃”。
2.而蓝色框中的内容便是使用CSRF所要注意的几个地方。
- 浏览器要开启cookies
- 将‘django.middleware.csrf.CsrfViewMiddleware’加到settings.py的MIDDLEWARE= [xxx]里面。
- 要将{% csrf_token %}放入你的post表单中!
- 后台的view中要使用 render()方法!
2.2发生403错误时的解决办法
博主在遇到这个错误时,并没有仔细看注意事项。而是习惯性地百度了这个错误,看了一堆博客,仍然没有解决。最后认真看了注意事项,发现解决办法其实就在注意事项里面。(以下所述是正常使用csrf的方法,若想简便,可以直接屏蔽掉 csrf,不过不推荐屏蔽的方式。)
2.2.1开启浏览器cookies
浏览器的cookie开启方式请自行度娘
2.2.2添加配置
当然,这个设置一般在创建项目时就已经自动配置好了。
2.2.3post表单中添加{% csrf_token %}
2.2.4后台函数使用render()方法
注意:这里所指的函数不是处理你表单数据的函数,而是跳转到表单所在页面的函数!!!博主便是在最后一步摔了个“七荤八素”,不过最后想想也是怪自己笨,你不先给它一个值,后台又如何验证呢?