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 10 Python
采用python实现简单QQ单用户机器人的方法
Jul 03 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
PyCharm设置SSH远程调试的方法
Jul 17 Python
Python中的Numpy矩阵操作
Aug 12 Python
python二维键值数组生成转json的例子
Dec 06 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 Python
Python Django路径配置实现过程解析
Nov 05 Python
Python实现双向链表
May 25 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
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
js实现同一页面多个不同运动效果的方法
2015/04/10 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Python深入学习之闭包
2014/08/31 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
HTML5 placeholder(空白提示)属性介绍
2013/08/07 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
彪马法国官网:PUMA法国
2019/12/15 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
法律七进实施方案
2014/03/15 职场文书
法制宣传月活动方案
2014/05/11 职场文书
人力资源求职信
2014/05/25 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
消防演习感想
2015/08/10 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python