如下图所示报错

表单的CSRF防护,可以在模板上删除{% csrf_token %}, 并且在相应的视图函数中添加装饰器@csrf_exempt

当前我的项目是在服务器部署添加域名后报错的

这个错误是因为 Django 的 CSRF 验证机制检测到请求的 OriginReferer 头部与受信任的域名不匹配。要解决此问题,可以将新域名添加到 Django 的 settings.py 中的 CSRF_TRUSTED_ORIGINS 设置里。

解决步骤

  1. 打开 Django 项目的 settings.py 文件。

  2. 找到或添加 CSRF_TRUSTED_ORIGINS 配置,并将你的域名添加进去:

    CSRF_TRUSTED_ORIGINS = [
        'http://www.xxxx.com',  # 添加你的域名
        'https://www.xxxx.com'  # 如果使用 HTTPS 协议,则也需要加上
    ]
    

  3. 如果你还没有配置 ALLOWED_HOSTS,也可以在同一个文件里添加或更新它,以确保 Django 允许该域名访问:

    ALLOWED_HOSTS = [
        'www.xxxxx.com',
        'xxxx.com'  # 如果需要无 www 前缀的访问
    ]
    

  4. 保存 settings.py 并重新启动 Django 应用以应用更改。

注意

  • 如果你使用 HTTPS 协议访问你的域名,确保 CSRF_TRUSTED_ORIGINS 中也包含 https://www.xxx.com
  • 添加之后,Django 将信任从这些域名发出的请求,CSRF 验证应当通过。

完成这些步骤后,你的登录表单应该能够正常提交,不再触发 CSRF 验证错误。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐