django-csrf使用和禁用方式


Posted in Python onMarch 13, 2020

orm表单使用csrf

a. 基本应用

form表单中添加

{% csrf_token %}

b. 全站禁用

# 'django.middleware.csrf.CsrfViewMiddleware',

c. 局部禁用

'django.middleware.csrf.CsrfViewMiddleware',
  
  from django.views.decorators.csrf import csrf_exempt

  @csrf_exempt
  def csrf1(request):

    if request.method == 'GET':
      return render(request,'csrf1.html')
    else:
      return HttpResponse('ok')

d. 局部使用

# 'django.middleware.csrf.CsrfViewMiddleware',
  
  from django.views.decorators.csrf import csrf_exempt,csrf_protect

  @csrf_protect
  def csrf1(request):

    if request.method == 'GET':
      return render(request,'csrf1.html')
    else:
      return HttpResponse('ok')

ajax提交数据

Ajax提交数据时候,携带CSRF:

a. 放置在data中携带

<form method="POST" action="/csrf1.html">
  {% csrf_token %}
  <input id="user" type="text" name="user" />
  <input type="submit" value="提交"/>
  <a onclick="submitForm();">Ajax提交</a>
</form>
<script src="/static/jquery-1.12.4.js"></script>
<script>
  function submitForm(){
    var csrf = $('input[name="csrfmiddlewaretoken"]').val();
    var user = $('#user').val();
    $.ajax({
      url: '/csrf1.html',
      type: 'POST',
      data: { "user":user,'csrfmiddlewaretoken': csrf},
      success:function(arg){
        console.log(arg);
      }
    })
  }

</script>

b. 放在请求头中

<form method="POST" action="/csrf1.html">
  {% csrf_token %}
  <input id="user" type="text" name="user" />
  <input type="submit" value="提交"/>
  <a onclick="submitForm();">Ajax提交</a>
</form>
<script src="/static/jquery-1.12.4.js"></script>
<script src="/static/jquery.cookie.js"></script>

<script>
  function submitForm(){
    var token = $.cookie('csrftoken');
    var user = $('#user').val();
    $.ajax({
      url: '/csrf1.html',
      type: 'POST',
      headers:{'X-CSRFToken': token},
      data: { "user":user},
      success:function(arg){
        console.log(arg);
      }
    })
  }
</script>

补充知识:在django的form表单及ajax提交的数据中添加认证的csrfmiddlewaretoken

1. 对于ajax提交数据,把下面的代码加入到js的头部,可以保证ajax执行时自动提交参数csrfmiddlewaretoken。

$.ajaxSetup({data: {csrfmiddlewaretoken: '{{ csrf_token }}' }});

2. 对于form表单提交数据,在表单内部加入{% csrf_token %}标签,会自动生成一个input标签

<form>{% csrf_token %}</form>

得到

<form><input name="csrfmiddlewaretoken" value="..." type="hidden"></form>

或者使用js添加:

$("#csrf_token").replaceWith("{% csrf_token %}");

3. 另外记录一下使用模板过滤器处理form.field的方法

$("#{{ field.name }}").replaceWith('{{ field|linebreaksbr }}');
$(".{{ field.name }}").text('{{ field.errors|striptags }}');
{{ value|linebreaksbr }}: "Joel\nis a slug" => "Joel<br>is a slug"
{{ value|striptags }}: "<b>Joel</b> <button>is</button> a <span>slug</span>" => "Joel is a slug".

以上这篇django-csrf使用和禁用方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python计算程序运行时间的方法
Dec 13 Python
python中enumerate函数用法实例分析
May 20 Python
Python自动扫雷实现方法
Jul 25 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
python Tkinter的图片刷新实例
Jun 14 Python
通过代码简单了解django model序列化作用
Nov 12 Python
python 提取html文本的方法
May 20 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 #Python
python爬虫实现获取下一页代码
Mar 13 #Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 #Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 #Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 #Python
详解用Python进行时间序列预测的7种方法
Mar 13 #Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 #Python
You might like
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
基于vue.js无缝滚动效果
2018/01/25 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
[59:35]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第一场 1月8日
2021/03/11 DOTA
python解析xml文件实例分享
2013/12/04 Python
Python 功能和特点(新手必学)
2015/12/30 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python实现一个优先级队列的方法
2020/07/31 Python
财务人员个人求职信范文
2013/12/04 职场文书
2014年情人节活动方案
2014/02/16 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
生物制药专业求职信
2014/03/11 职场文书
家长会主持词
2014/03/26 职场文书
党员政治学习材料
2014/05/14 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js