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实现把回车符\r\n转换成\n
Apr 23 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
Django rest framework工具包简单用法示例
Jul 20 Python
python and or用法详解
Jun 26 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
python关于矩阵重复赋值覆盖问题的解决方法
Jul 19 Python
Python实现生成密码字典的方法示例
Sep 02 Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
python Paramiko使用示例
Sep 21 Python
Python中zipfile压缩包模块的使用
May 14 Python
解决python3安装pandas出错的问题
May 20 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
幼儿教师个人求职信范文
2013/09/21 职场文书
有创意的广告词
2014/03/18 职场文书
励志演讲稿600字
2014/08/21 职场文书
求职自我评价范文100字
2014/09/23 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
python 调用js的四种方式
2021/04/11 Python
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技