文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习

最近工作闲,没事自学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验证失败的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

                    <p><p></td></tr></table>

原文地址是:http://www.piaodoo.com/thread-13849-1-2.html

关于django 1.10 CSRF验证失败的解决方法 - python相关推荐

  1. django 1.10 CSRF验证失败的解决过程

    最近工作闲,没事自学django,感觉这个最烦的就是各版本提供的api函数经常有变化,不是取消了就是参数没有了,网上搜到的帖子也没说明用的是什么版本的django,所以经常出现搬运过来的代码解决不了问 ...

  2. ajax导致csrf验证失败的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 解决方法如下: function getCookie(name) {var cookieValue = null;if (do ...

  3. django ajax请求 csrf验证失败

    如何解决django ajax请求 csrf验证失败的问题: 原文链接:http://stackoverflow.com/questions/5100539/django-csrf-check-fai ...

  4. python token验证失败百分百解决_Token验证失败的解决方法

    Token验证失败的解决方法 一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定 ...

  5. 微信token验证失败的解决方法

    微信token验证失败的解决方法 参考文章: (1)微信token验证失败的解决方法 (2)https://www.cnblogs.com/kenshinobiy/p/5433705.html 备忘一 ...

  6. Ubuntu 11.10 make menuconfig 失败的解决方法

    Ubuntu 11.10 make menuconfig 失败的解决方法 参考文章: (1)Ubuntu 11.10 make menuconfig 失败的解决方法 (2)https://www.cn ...

  7. idea验证失败_iphone x验证失败怎么办?苹果iphone x验证失败的解决方法

    前几日刚入手iphone x,今天发现iphone x验证失败了,不知道什么原因最后研究了一番发现是网络的原因,那么如何解决呢?下面由我带给大家iphonex验证失败,苹果x验证失败解决方案. 苹果i ...

  8. froala editor富文本编辑器出现验证失败的解决方法

    froala editor富文本编辑器出现验证失败的解决方法 出现这种情况,首先要下载源码包地址 https://www.froala.com/wysiwyg-editor 之后引用本地的 froal ...

  9. python token验证失败百分百解决_微信token验证失败的解决方法

    一.问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否正确.如果确定配置没有问题,请按下面的方法检 ...

最新文章

  1. linux 下,解决tomcat服务器接收中文乱码的问题
  2. Sublime Text 解决 Unable to download XXX 问题
  3. 2020 操作系统第一天复习(习题总结)
  4. 反思耗时任务异步处理
  5. Cocos Creator Ui系统
  6. (JAVA)Integer类之基本数据类型之间的转换
  7. [Hands On ML] 3. 分类(MNIST手写数字预测)
  8. 电脑运行VirtualBox虚拟机总是提示0x00000000错误的解决方法
  9. Chromium Embedded Framework中文文档 (SVN属性)
  10. 记一次简单的破解程序(逆向)
  11. paip.SVN merge分支合并到主干
  12. Hvv期间蜜罐分析研究
  13. 精益创业实践|企业创新如何克服9大关键挑战
  14. 连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册
  15. C语言求数列最小公倍数,C语言复习---获取最小公倍数(公式法:两个数相乘等于最小公倍数乘以最大公约数)...
  16. 一文读懂Tiger DAO VC模式,风险投资改朝换代
  17. Study13(从小白到大佬)
  18. R Z-score结果
  19. 16进制的 RBG值 颜色 转换
  20. dede织梦CMS安装页面出现dir的通用安装教程

热门文章

  1. 资深PM赞不绝口的【9种项目管理图】
  2. Unity中制作自定义字体的两种方式
  3. CSS基础: 浮动 以及清除浮动
  4. 五一回家的票买没?来看看“12306” 是如何支撑百万 QPS 的?
  5. W11或W10系统如何进行休眠?
  6. 嵌入式学习之Linux驱动篇-迅为视频更新了
  7. matlab应用于外卖软件,(大学生)外卖手机软件使用情况
  8. 制作同轴电缆BNC接头的标准作业流程
  9. Open3d学习计划——3(点云)
  10. hutool 自定义excel_使用Hutool Java工具类库 导出Excel 超级简单