django开发中CSRF verification failed. Request aborted.的问题

在使用Django提交Post表单时遇到如下错误:
Forbidden (403) 
CSRF verification failed. Request aborted.

以下是网上给出的资料:
原因在"帮助"中已经写的很清楚了。
一般而言,这可以发生时,有一个真正的跨站请求伪造,或当Django的CSRF的机制还没有正确使用。 对于POST表单,您需要确保:
*该视图功能使用模板RequestContext的。
*在模板中,有{%csrf_token%}(模板网址标记在每个邮局形式的内部目标。
*如果您不使用CsrfViewMiddleware,那么你必须在view中使用csrf_protect,

您看到此页面的帮助部分,因为你在settings中设置了 DEBUG = True。 改变这种状况为False,只有最初的错误信息会被显示。您可以使用CSRF_FAILURE_VIEW设置自定义此页面。

所以,解决方法:
1、在表单Form里加上{% csrf_token %}

2、在Settings里的MIDDLEWARE_CLASSES增加配置:(一般默认就有)
'django.middleware.csrf.CsrfViewMiddleware',
 #'django.middleware.csrf.CsrfResponseMiddleware',
1.2.X示例:
MIDDLEWARE_CLASSES = ( 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.middleware.csrf.CsrfResponseMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 

3、在view中的方法上面加上@csrf_protect注解。同时使用RequestContext代替Context。示例:
-----------------------------------------------------------------
@csrf_protect   
def login(request):
...
return
render_to_response('index.html',context_instance=RequestContext(request))

实际我做的修改就是红色字体部分,我是刚开始学习Django,有许多不明白的地方,这个只是作为一个记录,以后有待更新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值