django1.10版本解决CSRF问题

    >>> import django  
    >>> django.get_version()  
    '1.10.6'  

(本文誊抄自之前自行编写的CSDN文档中)  

CSRF是(Cross-Site Request Forgery)跨站请求伪造,简单的用于防止恶意网站上的表单或者JavaScript利用用户登录过的认证信息,对网站进行某些操作,利用Django进行web开发过程中,如不对app下的views.py脚本和template下的html文件做重写,在进行POST时就会出现403错误;

 

如下使用题注自行开发的简易blog进行演示:

1.POST提交过程

 

2.CSRF报错(Django setting.py脚本debug=True)

3.根据help中提示的内容进行排除(Django项目中的setting.py文件的debug=True时才能显示详细信息):

重写html文件:

 

<!-- archive.html -->  
<form action="/blog/create/" method="post"><span style="color:#FF0000;">{% csrf_token %}</span>  
        Title:  
        <input type=text name=title><br>  
        Body:  
        <textarea name=body rows=3 cols=60></textarea><br>  
        <input type=submit>  
</form>  
<hr>  
  
{% for post in posts %}  
        <h2>{{post.title}}</h2>  
        <p>{{post.body}}</p>  
        <p>{{post.timestamp}}</p>  
  
{% endfor %}  

文中{% csrf_token %}字段

 

4.重写应用下的ciews.py

<span style="color:#FF0000;">from django.shortcuts import render</span>  
from datetime import datetime  
from django.http import HttpResponseRedirect  
from blog.models import BlogPost  
from django.template import RequestContext  
import django.middleware.csrf  
def create_blogpost(request):  
        if request.method == 'POST':  
                BlogPost(  
                title = request.POST.get('title'),  
                body = request.POST.get('body'),  
                timestamp = datetime.now(),  
  
                        ).save()  
        return HttpResponseRedirect('/blog/')  
  
  
def archive(request):  
        posts = BlogPost.objects.all().order_by('-timestamp')[0:]<span style="color:#FF0000;">  
        return render(request,'archive.html',{'posts':posts})</span>  

5.再次测试,能够正常post

 

转载于:https://www.cnblogs.com/ziwei-li/p/6731125.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值