最近工作闲,没事自学django,感觉这个最烦的就是各版本提供的api函数经常有变化,不是取消了就是参数没有了,网上搜到的帖子也没说明用的是什么版本的django,所以经常出现搬运过来的代码解决不了问题的情况,不过基本上遇到的坑不多,最坑的就是在提交post表单时弄了两天的CSRF验证失败问题,特此记录一下,我用的是django 1.10.3:
如果你不想使用这个功能,直接找到settings.py中的'django.middleware.csrf.CsrfViewMiddleware',这一行,直接给丫注释掉,就不用启动CSRF检查了,一了白了,当然了如果你是练手的时候这么干还行,正式一点的项目还是启用最好,省的被人搞跨站攻击,到时候加班倒霉挨骂的还是你。
关于跨站攻击简单说一下我的理解,就是比如说你登录了一个交友网站后,才可以修改提交自己的基本资料,此时登录后cooikes就被记录到本机了,你的基友嫉妒你,他做了一个假页面A发给你,引诱你点击或填写提交后,直接把数据提交给了真正的交友网站,由于你之前已经登录并且cooikes被记录下来了,所以这次提交虽然是从假页面A提交过去的,但是交友网站校验是通过的,所以就可以任意修改提交数据,比如说把你的年龄恶意修改成60的一个老头儿,导致你长期吃狗粮。。。
继续说正事,那么如果想开启怎么办呢,首先把刚才注释的'django.middleware.csrf.CsrfViewMiddleware'还是放开吧,然后继续如下步骤:
1、首先弄个表单提交页面search_form_post.html(该页面模拟搜索并显示在数据库里保存的汽车列表),注意在from表单内增加{% csrf_token %}标签,代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>搜索汽车</title> </head> <body> <form action="" method="post"> {% csrf_token %} <input type="text" name="q"><input type="checkbox" name="chk_contains">是否模糊搜索 <input type="submit" value="Search"> </form> {{ message }} <p> {% for car in car_list %} <li> {{ car.brand }} </li> {% endfor %} </body> </html>
2、在你的apps模块的views.py增加一个处理搜索提交的方法,代码如下:
from django.shortcuts import render def search_form_post(request): car_list = None if 'q' in request.POST: message = '你搜索的是: %r' % request.POST['q'] if 'chk_contains' in request.POST: car_list = Car.objects.filter(brand__contains=request.POST['q']) else: car_list = Car.objects.filter(brand=request.POST['q']) else: message = '请输入要搜索的内容并点击搜索' return render(request, "search_form_post.html", {'message': message, 'car_list': car_list})
注意上边关键的地方来了,django 1.10直接使用render方法就可以了,{% csrf_token %}标签才会被自动替换为下图一样的隐藏域,我就是因为用的get_template("search_form_post.html").render(context),所以老是替换的值为空,因为当你使用这种方式加载模板的时候,不会自动替换{% csrf_token %}标签,当然也有解决办法,就是使用context.update(csrf(request)),来自己替换,不过挺麻烦的,还是用render方法自动替换方便
然后第三个参数,一定要使用{}花括号的字典数据类型,不要使用什么元祖、列表之类的数据类型了,这样模板内的变量才能被正确替换显示出来,我被坑主要就是{% csrf_token %}标签不被自动替换+模板内变量不显示,剩下的就是去urls.py里配置url去试试吧
以上这篇关于django 1.10 CSRF验证失败的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
django,CSRF验证
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]