django1.6 CSRF verification failed. Request aborted. 用出现表单提交

当表单提交的时候出现了这个界面:

Forbidden (403)

CSRF verification failed. Request aborted.

 

网上有很多解决方式, 大体是三种解决方法,但是我试了下 ,都不能解决我的问题:

这里列觉下其他3中解决方法:

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))

我测试了下不符合我出现的问题.

解决方法的思路:

1,先知道要添加在form里的这个东西是做什么的

{% csrf_token %}  :

什么是CSRF

问题是解决了,但我不禁回想为什么在Django里提交POST表单要配置那么麻烦(其实也不麻烦,但对新手来说就不一样了),于是搜索关键字看看,得知它是一种跨站请求伪造,黑客可以利用这个攻击站点。而Django里的使用这个机制就是防止CSRF模式攻击,原理大致是当你打开页面的时候产生一个csrftokey种下cookie,然后当你提交表单时会把本地cookie里的csrftokey值给提交服务器,服务器判断只有有效的csrftokey值才处理请求.

在网上别人可以看到csrftokey的值,但是我用input的解决是空

2,找csrf_token为空的原因:

找到了一个关于django中ajax使用时csrf_token为空的例子:

http://blog.shazhouke.webfactional.com/?tag=django-csrf-jquery-ajax

 

3.思考,因自己也没用ajax请求.

就观察自己的代码:

发现问题:

对比:

@login_required
def index(request):
    username = request.user.username
    return  render_to_response('index.html',{
        'username':username
    },context_instance=RequestContext(request))
@login_required
def index(request):

    return  render_to_response('index.html')

下面这个是错误的.

还是因为RequestContext这一块的问题

注意引入的包:    from django.shortcuts import render_to_response,RequestContext

 

 

 

 

 

 

 

 

 
 
 
 

 

 

 

 

 

转载于:https://www.cnblogs.com/Jghost/p/3592022.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值