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中apply函数的用法实例教程
Jul 31 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
使用Python对SQLite数据库操作
Apr 06 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
Dec 04 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
python判断all函数输出结果是否为true的方法
Dec 03 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
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
类似框架的js代码
2006/11/09 Javascript
javascript编程起步(第四课)
2007/01/10 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
python中类的一些方法分析
2014/09/25 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
python进行TCP端口扫描的实现
2018/12/21 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
会计与审计专业大专生求职信
2013/10/03 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
世界环境日活动总结
2015/02/11 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书