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

时间: 2024-12-28 16:22:06

django1.10版本解决CSRF问题的相关文章

使用Django1.10版本时,配置文件要注意的地方

问题一描述: Django1.10版本中框架中settings.py配置文件 DEBUG= True ALLOWED_HOSTS = ['*'] #这样可以让所有来源的ip访问到后台 使用 python3 manager.py runserver后访问,发现没有css,js样式. 网上查询得知:Django1.9版本后静态文件目录需要创建.大概的意思就是在settings.py文件中添加一下配置部分: PROJECT_ROOT = os.path.dirname(os.path.abspath(

centos7 + Apache2.4 + python3.5 +mod_wsgi4.5.15 + Django1.10安装指导

本文指导安装Python3.5, mod_wsgi4.5.15, Django1.10,以及安装过程中可能出现的问题及解决方法. 操作系统不局限于centos,大多数linux操作系统都适用.其他版本的操作系统出现问题的解决思路和方法基本是一样的...开始... 1. 安装Apache2.4 如果是Centos7版本,默认使用yum安装之后的apache就是2.4版本了,建议安装最新版本.因为我们后续要安装mod_wsgi,它依赖apache的开发库和Python的开发库,所以也要顺带安装apa

基于Django1.10与Celery4实现异步队列任务

由于django-celery这个模块我在django1.10的版本内运行不起来,只能使用野生的Celery,Celery4支持django1.8以上的版本,1.8以下的版本请使用Celery3,整个配置过程并不复杂: 整个目录结构: 一.安装模块: pip install celery pip install django-celery-results django-celery-results作用是将Celery的运行结果存入数据库 二.建立Celery入口文件(celery.py): fr

django1.10使用本地静态文件

django1.10使用本地静态文件方法 本文介绍的静态文件使用,是指启动web站点后,访问静态资源的用法,实际静态资源地址就是一个个的url 如果没有启动web站点,只是本地调试html页面,那直接用相对路径访问资源即可 1.settings.py中加入下面两句话(应该是默认的,不需要增加) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') 说明: 1.STATIC_URL为访问静态资源的链接,比如12

用条件注释判断浏览器版本解决页面兼容问题

在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,那么如何解决兼容问题呢,本文就为大家一一道来对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因

用条件注释判断浏览器版本,解决兼容问题

对于浏览器兼容问题,我们应该碰到很多了,在平时写一些页面时,在IE8.IE9上可能好好的,当我们在IE6.IE7或者是其他的浏览器上再浏览这些页面时,可能会发现我们的页面已经面目全非了,作为一名前端开发人员,这是最让人发疯的问题了,那么我们该怎么解决这些问题呢? 首先,我们写的页面在不同的浏览器上之所以会出现表现不同的问题,是因为不同的浏览器在解析页面时,他们所遵循的规则并不是完全相同的.比如IE,不同的版本解析都不同,何况是不同的浏览器厂商,不同的内核呢.但是我们在遇到兼容性问题时,应该首先检

websocket通讯协议(10版本)简介

前言: 工作中用到了websocket 协议10版本的,英文的协议请看这里: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10 这篇文章相当于工作的总结吧. 首先, 你需要简单了解一下为什么会诞生websocket通讯协议,web上的通讯一般都是基于HTTP(超文本传输协议)的通讯,故而没有建立长时间的网络连接的方法,一般的通讯都是这样子的: 请求 浏览器--------------------->服务器 <-

django1.10安装

在Ubuntu14上 1,先装pip 2,装ipython 3,装django 由于pip安装django报错,故源码安装 可能是 apt-get install python-django https://www.djangoproject.com/download/ 下载:django1.10 https://github.com/django/django/archive/master.tar.gz 问题: [email protected]:~/d/mysite$ ./manage.py

升级ox 10.10版本后 php项目无法显示验证码

升级ox 10.10版本后,php环境配置好,php项目能运行,但是验证码不能显示. 查看phpinfo(),有GD库技持. 有类似情况,而已解决的,请教一下解决方法