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中MySQLdb模块用法实例
Nov 10 Python
python让图片按照exif信息里的创建时间进行排序的方法
Mar 16 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
用Python3创建httpServer的简单方法
Jun 04 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
python 实现PIL模块在图片画线写字
May 16 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
python dir函数快速掌握用法技巧
Dec 09 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
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python登录QQ邮箱发信的实现代码
2013/02/10 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
模具设计与制造专业求职信
2014/07/19 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
检举信的写法
2019/04/10 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers