在Django的表单提交POST请求的时候,你可能会遇到如题所示的报错,具体如下:

该页面的路由配置如下:

可以从路由表看到,请求【/get-post】关联的视图【views.py】中的方法是【request_method_view】


解决这个问题有两种方法:

  1. 关闭Django的CSRF验证
  2. 给表单添加CSRF

先看看怎么给表单增加CSRF:

将表单部分的代码修改为如下所示:

可以看到,上面最关键的部分是:

{% csrf_token %}

然后看看视图中的代码:


再来看看禁用CSRF

先把代码还原:

可以看到,这个时候,POST的时候的代码没有带上【csrf_token】的标记,并且最后访问的时候,又返回了状态码【403】

接下来,在Django项目中的同名子目录的配置文件【settings.py】中禁用【CSRF】功能:

如上图,将【settings.py】中的【MIDDLEWARE】部分的【django.middleware.csff.CsrfViewMiddleware】注释掉,就禁用了【CSRF】

然后,再访问刚才的网页,就没有关于CSRF的错误了:

访问:http://127.0.0.1:8000/get-post

然后,看看Django的命令行(Console)输出:

可以看到,文首的问题已经得到了解决。


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装