django的csrf实现过程详解


Posted in Python onJuly 26, 2019

如果是ajax提交,可以按照下面的方式处理

<script src="/static/jq/jquery-3.3.1.js"></script>
 <script src="/static/jq/jquery.cookie.js"></script>
 <script>
   $(function () {
     ajax_buttion()
   }) 
   function ajax_buttion() {
     $("#btn").bind("click",function () {
       $.ajax(
         {
           url:"/test/app1/",
           type:"post",
           data:{
             username:"root",
             pwd:"admin"
           },
           headers:{
             "X-CSRFToken":$.cookie("csrftoken")
           },
           sucess:function (data) {
             console.log(data)
 
           }
         } 
       ) 
     })
   }
 </script>

可以设置一个全局的设置,然后在$(function){

}中执行函数

django的csrf实现过程详解

$(function () {
  ajax_buttion()
  $.ajaxSetup()
})

如果是form表单提交,则可以按照下面的方式处理

<form action="/test/app1/" method="post">
  {% csrf_token %}
  <input type="text" name="uname">
  <input type="submit" value="submit">
  <input type="button" value="ajax" id="btn">
</form>

然后返回使用render的方式返回

def test(request):
  # int("hahah")
  # print(settings.C)
  print("test------->views",time.time())
 
  print(request.method)
  print("_".center(100,"-"))
  print(request)
  # return HttpResponse("last_app1")
  return render(request,"test.html")

中间件里csrf默认是全局都生效的,但是如果我们有需求,比如全局生效,但是我某个函数不需要使用csrf该怎么办;或者我的全局不设置csrf,但是对某个视图函数需要采用csrf,该怎么办

这里就需要导入2个模块

from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.csrf import csrf_protect

然后在视图函数中使用使用装饰器来装饰视图函数

下面的例子就是起到全局启动csrf,但是我这个函数不启动csrf

@csrf_exempt
def test(request):
  # int("hahah")
  # print(settings.C)
  print("test------->views",time.time())
 
  print(request.method)
  print("_".center(100,"-"))
  print(request)
  # return HttpResponse("last_app1")
  return render(request,"test.html")

下面的例子就是全局不启用csrf,但是我这个函数不启动csrf

@csrf_protect
def test(request):
  # int("hahah")
  # print(settings.C)
  print("test------->views",time.time())
 
  print(request.method)
  print("_".center(100,"-"))
  print(request)
  # return HttpResponse("last_app1")
  return render(request,"test.html")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python库urllib与urllib2主要区别分析
Jul 13 Python
python实现从ftp服务器下载文件的方法
Apr 30 Python
Python计算一个文件里字数的方法
Jun 15 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python中int()函数的用法浅析
Oct 17 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 Python
详解Python 4.0 预计推出的新功能
Jul 26 #Python
python mysql断开重连的实现方法
Jul 26 #Python
seek引发的python文件读写的问题及解决
Jul 26 #Python
python经典趣味24点游戏程序设计
Jul 26 #Python
对django后台admin下拉框进行过滤的实例
Jul 26 #Python
python函数的万能参数传参详解
Jul 26 #Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 #Python
You might like
PHP 字符串 小常识
2009/06/05 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
js中的string.format函数代码
2020/08/11 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
layui使用label标签的方法
2019/09/14 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
Python切图九宫格的实现方法
2019/10/10 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
Python项目跨域问题解决方案
2020/06/22 Python
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
优秀大学生推荐信范文
2013/11/28 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
银行进社区活动总结
2014/07/07 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
教师素质教育心得体会
2016/01/19 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
php双向队列实例讲解
2021/11/17 PHP
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis
Go语言编译原理之源码调试
2022/08/05 Golang