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中的Cookie模块使用
Jul 06 Python
详解设计模式中的工厂方法模式在Python程序中的运用
Mar 02 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python合并多个Excel数据的方法
Jul 16 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
使用Python的turtle模块画国旗
Sep 24 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
Python实现名片管理系统
Feb 14 Python
python实现图像全景拼接
Mar 27 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
Python编写万花尺图案实例
Jan 03 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
PHP4实际应用经验篇(5)
2006/10/09 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
PHP文件上传类实例详解
2016/04/08 PHP
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python pandas 时间日期的处理实现
2019/07/30 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
《秋游》教学反思
2014/04/24 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
python通过opencv调用摄像头操作实例分析
2021/06/07 Python