提交post表单时弄了两天的CSRF验证失败问题,特此记录一下

如果你不想使用这个功能,直接找到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>

2、在你的apps模块的views.py增加一个处理搜索提交的方法,代码如下:

from django.shortcuts import renderdef search_form_post(request):car_list = Noneif '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框架CSRF验证失败解决相关推荐

  1. Django中ajax发送post请求,报403错误CSRF验证失败解决办法

    今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了:很显 ...

  2. Django中不携带token导致csrf验证失败解决方法

    1 问题 在使用Django发送post等请求时如果不懈怠csrf的token就会出现403 Forbidden错误. 2 解决方式 如果很多接口都不需要csrf验证的话,则可以将settings文件 ...

  3. ajax的post请求出现403错误,如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题...

    如何解决Django中ajax发送post请求报403错误CSRF验证失败的问题 发布时间:2021-02-05 14:23:57 来源:亿速云 阅读:92 作者:小新 这篇文章主要介绍了如何解决Dj ...

  4. 关于django 1.10 CSRF验证失败的解决方法 - python

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 最近工作闲,没事自学django,感觉这个最烦的就是各版本提供的api函数经常有变化,不是取消了就是参数没有了,网上搜到 ...

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

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

  6. CSRF验证失败请求中止在Django上

    如何解决CSRF验证失败请求中止在Django上? 你需要将{% csrf_token %}模板标记添加为formDjango模板中元素的子代. 这样,模板将呈现一个隐藏元素,其值设置为CSRF令牌. ...

  7. Django项目出现: 禁止访问(403),CSRF验证失败,相应中断

    CSRF验证失败,相应中断  错误信息为: 查看错误信息,不难发现,我们在上面问题中有一个{% csrf_token %},这是一个网络漏洞,在所有表单提交中,都需要添加并且必须放在format的后面 ...

  8. django ajax请求 csrf验证失败

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

  9. Django项目报错: 禁止访问(403),CSRF验证失败,相应中断

    如果想要取消表单的CSRF防护,可以在模板上删除{% csrf_token %}, 并且在相应的视图函数中添加装饰器@csrf_exempt, 代码如下: from django.views.deco ...

最新文章

  1. 安装mayavi和VTK库的血泪史
  2. 中控考勤机的二次开发之数据秒上传至服务器功能
  3. 如何用SQL生成SQL批处理文件?
  4. vs vb连接mysql_详细介绍VS2010 VB ACCESS数据库的连接(如有不对,敬请改正)
  5. 修改对象的某个属性的值_如何理解Python中的面向对象编程?
  6. working copy is not up-to-date
  7. include 头文件循环引用问题
  8. extern 关键字详解
  9. ThinkPHP 5.1+全开源带后台商城小程序源码程序+带详细安装使用文档
  10. Android 序列帧动画
  11. ce修改面板属性_鬼谷八荒ce教程 教你如何修改属性+灵石+物品+时间等方法
  12. 解决win7任务栏谷歌浏览器chrome图标丢失、异常空白的问题
  13. 用计算机画画的图片,儿童电脑画画大全图片
  14. tabLayout 设置分割线
  15. 黄一老师:征信问答这些信用知识你都了解吗?
  16. 华为运营商级路由器配置示例 | EVdPdNd VPLS over SRv6 TE Policy(静态配置)
  17. baidu手机卫兵给开发者生态带来新想像空间
  18. 数据分析---Fama-French三因子模型
  19. TP-link WR703N v1.17固件不拆机绕过RSA验证强刷openwrt
  20. Fabrice Bellard其人 ---- FFMPEG及其他……

热门文章

  1. 蓝牙连接之无需配对的低速传输数据方式
  2. 《深入浅出DPDK》—第1章1.4节探索IA处理器上最艰巨的任务
  3. 5,10,15,20-四(4-乙烯基苯基)卟啉(cas113477-21-7);叶酸卟啉(FAP);5-对-(对羰基苯甲酸)-氨基苯基-10,1 5,20-三苯基卟啉锌(Ⅱ)Zn(I)(p-CPTPP
  4. 使用了的五年笔记本只是因为一个系统?就秒杀了阿里云服务器?
  5. 汽车专题直播月 | CAN FD目前发展与未来展望
  6. “元宇宙第一股”飞天云动在港交所上市,网易科技数字化产业周报来了
  7. Proto3使用指南
  8. 极验验证码(6.0.9)破解(二) 之 反混淆
  9. js中的class类
  10. 2016年影响株洲的十大社会新闻是哪些?