更新:这个答案是从2011年开始的。CSRF今天很容易。
如今,您应该使用自动使用的
render快捷功能
return render(request,'template.html'),
RequestContext因此以下建议已过时8年。
- 使用
render
https://docs.djangoproject.com/en/2.2/topics/http/shortcuts/ - 添加CSRF中间件https://docs.djangoproject.com/en/2.2/ref/csrf/
- 使用
{% csrf_token %}模板标签 - 确认您看到正在生成CSRF令牌值,并已在表单请求中提交
原始回应
我的猜测是您在模板中有标记,但未呈现任何内容(或者您是说在实际HTML中确认正在生成CSRF令牌吗?)
无论是使用
RequestContext,而不是一本字典的
render_to_response("foo.html", RequestContext(request, {}))或者,确保你有
django.core.context_processors.csrf你的
CONTEXT_PROCESSORS设置。
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/
或手动将令牌添加到您的上下文中



