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的判断语句模拟三目运算
Apr 24 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
Django中的forms组件实例详解
Nov 08 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
python实现狄克斯特拉算法
Jan 17 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
Python通过len函数返回对象长度
Oct 22 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
关于js中的鼠标事件总结
2017/07/11 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
Python 中Pickle库的使用详解
2018/02/24 Python
python判断自身是否正在运行的方法
2019/08/08 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
Python实现播放和录制声音的功能
2020/08/12 Python
聊聊python中的循环遍历
2020/09/07 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
2015年客服工作总结范文
2015/04/02 职场文书
孙振耀退休感言
2015/08/01 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
redis数据结构之压缩列表
2022/03/21 Redis