You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 1.11添加{% csrf_token %}仍遇403 CSRF验证失败求助

解决Django 1.11 CSRF验证失败(403 Forbidden)的问题

嘿,我看你在开发评论页面时遇到了这个头疼的403错误——明明已经在模板里加了{% csrf_token %},却还是过不了CSRF验证。从你给出的代码片段来看,问题大概率出在render_to_response的使用上!

Django 1.11里的render_to_response默认不会自动把请求上下文(RequestContext)传给模板,这就导致模板里的CSRF token没法和当前请求关联起来,自然会触发验证失败。下面给你几个靠谱的解决办法:

方法1:改用render函数(强烈推荐)

其实Django早就不推荐用render_to_response了,取而代之的render函数会自动帮你处理请求上下文,省心又不容易出错。把你的视图代码改成这样:

from django.shortcuts import render  # 替换原来的render_to_response
from restapp.models import Restaurant, Food
from django.http import HttpResponseRedirect
from django.utils import timezone

# 假设你的视图函数是这个名字,根据实际情况调整
def comment_view(request):
    if request.method == 'POST':
        # 这里写你的表单提交处理逻辑
        return HttpResponseRedirect('/comment-success/')
    
    # 其他业务逻辑,比如获取需要展示的数据
    restaurants = Restaurant.objects.all()
    # 用render函数返回模板,自动带上请求上下文
    return render(request, 'your_comment_template.html', {'restaurants': restaurants})

方法2:手动给render_to_response传入RequestContext

如果你实在不想改render_to_response,那一定要记得手动把请求上下文传进去,这样模板里的CSRF token才能正常工作:

from django.shortcuts import render_to_response
from restapp.models import Restaurant, Food
from django.http import HttpResponseRedirect
from django.utils import timezone
from django.template import RequestContext

def comment_view(request):
    if request.method == 'POST':
        # 表单处理逻辑
        return HttpResponseRedirect('/comment-success/')
    
    restaurants = Restaurant.objects.all()
    # 关键:传入context_instance=RequestContext(request)
    return render_to_response(
        'your_comment_template.html',
        {'restaurants': restaurants},
        context_instance=RequestContext(request)
    )

额外排查点

除了上面的核心问题,你还可以检查这几点:

  • 确认{% csrf_token %}是放在<form>标签内部的,别不小心写到表单外面去了
  • 检查浏览器是否禁用了Cookie——CSRF验证依赖Cookie来存储token,禁用Cookie肯定会失败
  • 如果是用AJAX提交评论(看描述应该是普通表单,这条可以先忽略),要确保请求头里带上了X-CSRFToken字段

按照上面的方法调整后,应该就能顺利解决这个403错误啦!

内容的提问来源于stack exchange,提问作者naturlich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:32:03