原因
我这边定义了一个表单,向后台提交数据,提交方式为 POST
,程序出现以下问题:
出现原因
出现这个报错的原因主要是跨站请求伪造。Django 框架为我们提供了一个中间件,用于处理跨站请求伪造,假如某个用户从来没有登录过我们的网站就给我们网站 post 数据,这样是会被 Django 这个中间件给阻挡,禁止请求。然后我们在开发 web 的时候可以给每一个登录的用户分配一个 token。这个 token 会被写入到用户的 cookie 文件里面。然后下次用户 post 数据的时候,就会带上这个 token。 因此如果没有 token 的用户就会被禁止 post 数据。
解决
改 settings 文件
注释掉 settings 文件里关于 CSRF 的验证。
1 | MIDDLEWARE = [ |
改 views 文件
或者可以在你的 views 文件内,导入模块 from django.views.decorators.csrf import csrf_exempt
,并在接收 POST 请求数据的函数前面添加修饰器 @csrf_exempt
。
以上两个方法都可以让当前的 POST 不受 Django 跨站请求伪造的中间件的限制。