Django web : CSRF verification failed. Request aborted.

来源:互联网 发布:安卓4.4 联系人数据库 编辑:程序博客网 时间:2024/05/16 14:21
Reason given for failure:    CSRF cookie not set.    In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:    * The view function uses RequestContext for the template, instead of Context.    * In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.    * If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.You can customize this page using the CSRF_FAILURE_VIEW setting.
 
用火狐的时候出现了禁止(403)。CSRF的验证失败。 请求中止。失败的原因给予帮助:CSRF的饼干未设置。一般而言,这可以发生时,有一个真正的跨站请求伪造,
或当Django的CSRF的机制还没有正确使用。 对于POST表单,您需要确保:*该视图功能使用模板RequestContext的,而不是断章取义。
*在模板中,有1%csrf_token%)(模板网址标记在每个邮局形式的内部目标。*如果您不使用CsrfViewMiddleware,那么你必须使用数据csrf_protect任何意见,
使用csrf_token模板标记,以及那些接受这个职位。您看到此页面的帮助部分,因为你在你的Django调试=真设置文件。 改变这种状况为False,只有最初的错误信息
会被显示。您可以自定义此页面使用CSRF_FAILURE_VIEW设置

解决方案:

 

1、解决方法错误提示里已经给出了。在表单里加上{% csrf_token %}就行了。

2、加上标红的语句 return render_to_response('polls/detail.html',{'poll':p},context_instance=RequestContext(request))

3、views里面加上这个import                  from django.template import RequestContext

原创粉丝点击