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程序中使用Cookie的教程
Apr 30 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
Python对象转JSON字符串的方法
Apr 27 Python
使用python绘制常用的图表
Aug 27 Python
python 垃圾收集机制的实例详解
Aug 20 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python 字符串只保留汉字的方法
Nov 16 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
Django给admin添加Action的步骤详解
May 01 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Python编写nmap扫描工具
Jul 21 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 和 MySQL 基础教程(四)
2006/10/09 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
python Pillow图像处理方法汇总
2019/10/16 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
村干部培训班主持词
2014/03/28 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
2014年仓库工作总结
2014/11/20 职场文书
社区服务活动报告
2015/02/05 职场文书
同学聚会通知短信
2015/04/20 职场文书
小学校长开学致辞
2015/07/29 职场文书
社会实践心得体会范文
2016/01/14 职场文书
用Python实现Newton插值法
2021/04/17 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
Python实现仓库管理系统
2022/05/30 Python