django中使用CSRF出现403错误的解决办法

一.什么是 csrf ?

  简单的说,它的中文名叫做“跨域请求伪造。复杂的可以看这里

二.Django中如何使用csrf?

2.1新手的常犯错误

  如果你是初学Django,那你很可能会遇到这样一个问题——在前端用post请求传值的时候,莫名出现了以下错误…
django中使用CSRF出现403错误的解决办法_第1张图片
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
django中使用CSRF出现403错误的解决办法_第2张图片
浏览器的cookie开启方式请自行度娘

  2.2.2添加配置
django中使用CSRF出现403错误的解决办法_第3张图片
当然,这个设置一般在创建项目时就已经自动配置好了。

  2.2.3post表单中添加{% csrf_token %}
django中使用CSRF出现403错误的解决办法_第4张图片

  2.2.4后台函数使用render()方法
django中使用CSRF出现403错误的解决办法_第5张图片
注意:这里所指的函数不是处理你表单数据的函数,而是跳转到表单所在页面的函数!!!博主便是在最后一步摔了个“七荤八素”,不过最后想想也是怪自己笨,你不先给它一个值,后台又如何验证呢?

你可能感兴趣的:(Python之那些年掉过的坑)