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 错误和异常代码详解
Jan 29 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
Python如何使用logging为Flask增加logid
Mar 30 Python
python脚本框架webpy模板控制结构
Nov 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
Add Formatted Text to a Word Document
2007/06/15 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python定向爬取淘宝商品价格
2018/02/27 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
python中如何写类
2020/06/29 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
专营店会计助理岗位职责
2013/11/29 职场文书
竞争上岗实施方案
2014/03/21 职场文书
禁毒宣传工作方案
2014/05/23 职场文书
中学生学习保证书
2015/02/26 职场文书