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使用shelve模块实现简单数据存储的方法
May 20 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
python获取引用对象的个数方式
Dec 20 Python
Python关于反射的实例代码分享
Feb 20 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
Python 实现键盘鼠标按键模拟
Nov 18 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
mysql5写入和读出乱码解决
2006/11/25 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
JavaScript中字符串分割函数split用法实例
2015/04/07 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
高考考python编程是真的吗
2020/07/20 Python
python3代码中实现加法重载的实例
2020/12/03 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
北京导游词
2015/02/12 职场文书
出国导师推荐信
2015/03/25 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
Python 制作自动化翻译工具
2021/04/25 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏