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按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
Python get获取页面cookie代码实例
Sep 12 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
python super()函数的基本使用
Sep 10 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中socket的用法详解
2014/10/24 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
python创建临时文件夹的方法
2015/07/06 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
python 字符串常用函数详解
2019/09/11 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
顶岗实习计划书
2014/01/10 职场文书
公关活动策划方案
2014/05/25 职场文书
人事专员岗位说明书
2014/07/29 职场文书
好的旅游活动方案
2014/08/19 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python