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设计模式之单例模式实例
Apr 26 Python
Python中使用urllib2防止302跳转的代码例子
Jul 07 Python
python基础教程项目四之新闻聚合
Apr 02 Python
python队列queue模块详解
Apr 27 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
PyGame贪吃蛇的实现代码示例
Nov 21 Python
Python3 修改默认环境的方法
Feb 16 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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 结果集的分页实现代码
2009/03/10 PHP
php函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
php实现简单洗牌算法
2013/06/18 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
Jquery+javascript实现支付网页数字键盘
2020/12/21 jQuery
python保存字符串到文件的方法
2015/07/01 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
解决Django中多条件查询的问题
2019/07/18 Python
Python中itertools的用法详解
2020/02/07 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
python装饰器代码深入讲解
2021/03/01 Python
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
财务会计应届生求职信
2013/11/24 职场文书
高中英语教学反思
2014/02/04 职场文书
股权转让协议书范本
2014/04/12 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
倡议书格式及范文
2015/04/29 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
python多次执行绘制条形图
2022/04/20 Python