关于Django上线后的CSRF问题

首先在宝塔上安装Python项目管理器,采用如下配置,能够快速搭建Django项目。

1.png

然后进行映射域名,启动项目,发现只要含有表单的页面都出现CSRF错误的信息。由于Django的防CSRF是默认开启的,所以如果表单内没有添加{% csrf_token %}会导致报错。

2.png

对于CSRF报错,最简单的方法就是注释掉上面的代码,然后所有的表单都不添加{% csrf_token %}。但这又会引出一个新问题,因为Django系统自带的admin应用是包含{% csrf_token %}的,所以还要改系统生成的代码会十分麻烦。 如果你按照正常的流程搭建网站,出现CSRF报错,可能是你开启了SSL,也就是https,这里牵扯到一个跨域的问题。 {% csrf_token %}就是为了防止跨域请求的,而https与http并不是同一个域(可以去搜索跨域相关的知识),因此猜测是开启了https的问题,解决办法如下: 打开站点设置->反向代理->配置文件,添加如下代码:

3.png

重启服务器,问题解决。