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模块学习 filecmp 文件比较
Aug 27 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
Python表示矩阵的方法分析
May 26 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
python使用matplotlib绘制热图
Nov 07 Python
Python unittest 简单实现参数化的方法
Nov 30 Python
用Python PIL实现几个简单的图片特效
Jan 18 Python
django2.0扩展用户字段示例
Feb 13 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
python实现的Iou与Giou代码
Jan 18 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
用python自动生成日历
Apr 24 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生成便于打印的网页
2006/10/09 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
JS打印组合功能
2016/08/04 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
JS如何生成动态列表
2020/09/22 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
python中join()方法介绍
2018/10/11 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
初三学习决心书
2014/03/11 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
教师求职信
2014/06/17 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
关于Python中进度条的六个实用技巧分享
2022/04/05 Python