day64 django中间件的复习使用

django中间件

'''
django中间件是django的门户
1.请求来的时候需要先经过中间件才能达到真正的django后端
2.响应走的时候也需要经过中间件
​
djangp自带七个中间件
'''
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware',------session与之切切相关'django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
​
# django支持程序员自定义中间件并且暴露给程序员五个可以自定义的方法1.必须要掌握的process_requestprocess_response2.了解即可process_viewprocess_template_responseprocess_exception

img

如何自定义中间件

'''
1.在项目名或者应用名下创建一个任意名称的文件夹
2.在该文件内创建一个任意名称的py文件
3.在该py文件内需要数学类(这个类必须继承MiddlewareMixin)-然后在这个类里面就可以自定义五个方法(这五个方法用几个写几个,不需要全写)
4.需要将类的路径以字符串的形式注册到配置文件中才能生效
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware',------session与之切切相关'django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','你的自定义中间件'
]
'''1.必须要掌握的# process_request ---- 请求来的时候1.请求来的时候需要经过每一个中间件里面的process_request方法-结果的顺序是按照配置文件中注册的文件顺序从上到下依次执行2.如果中间件里面没有定义该方法,那么就直接跳过执行下一个中间件3.如果该方法返回了HttpResponse对象那么请求不再继续往后执行,而是直接原路返回-功能类似于校验失败,不允许访问总结:process_request方法就是用来做全局相关的所有限制功能# process_response ---- 就是django后端返回给浏览器的内容1.响应走的时候需要经过每一个中间件里面的process_response方法-该方法有两个额外的参数request和response2.该方法必须返回一个HttpResponse对象1.默认返回的就是response2.你也可以自定义返回3.顺序是按照配置文件中注册了的中间件从下往上的顺序# 问:如果在第一个process_request方法就已经返回了HttpResponse对象,那么响应走的时候是经过所有的中间件里面的process_response还是有其他的情况答:会直接走同级别的process_response方法返回,接下来的中间件就不执行了2.了解即可# process_view路由匹配成功之后执行视图函数之前,会自动执行中间件里面的该方法顺序是配置文件中的注册的中间件从上往下依次执行# process_template_response返回的HttpResponse对象有render属性时候才会触发顺序是按照配置文件中注册的中间件从下往上依次经过# process_exception当视图函数中出现异常的情况下触发顺序也是从下往上的顺序
​

1701162224518

---------------------------------------------------------------------------------------------->>>注意看request和response的执行顺序

csrf跨站请求伪造

'''
与钓鱼网站有关我搭建一个跟正规网站一模一样的界面用户不小心进入到了我们的网站,用户给某人打钱打钱的操作的确是提交给了正规网站,用户的钱也确确实实减少了但是打钱的目标账户被改变了,变成了别的用户内部本质:我们在钓鱼网站的页面,针对对方账户只给用户提供一个没有name属性的普通input框然后我们在内部隐藏一个已经写好的name和value的input框如何规避:csrf跨站伪造校验网站在给用户返回一个具有提交数据功能的页面的时候会给这个页面加一个唯一标识当这个页面超后端发送post请求的时候,我们后端会先校验这个唯一标识,如果唯一标识不对,就会直接拒绝(403)如果成功,就正常执行
'''

如何符合校验

# form表单如何符合校验在form表单中写入{% csrf_token %}

csrf相关装饰器

'''
1.网站整体都不校验csrf,就单单几个视图函数需要校验
2.网站整体都需要csrf校验,就单单几个试图函数不需要校验
'''
装饰器导入:from django.views.decorators.csrf import csrf_protect,csrf_exempt
csrf_protect:需要校验
csrf_exempt:不需要校验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/227832.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础语法之学习运算符

Python基础语法之学习运算符 一、代码二、效果 一、代码 print("1 1 ", 1 1) print("1 - 1 ", 1 - 1) print("1 * 1 ", 1 * 1) print("11 / 5 ", 11 / 5) print("11 // 5 ", 11 // 5) print("9 % 5 ", 9…

pycharm右键执行,出现Run ‘Python tests in xxx‘的问题

1.问题描述 用pytest框架写了一个python的模块,右键执行时发现,执行的模块显示有问题,如下图所示 2.解决问题 Python tests这表示,当前运行的代码文件进入了pytest模式,pytest模式不同于run模式,因为运行…

Elasticsearch 线上实战问题及解决方案探讨

1、reindex相关问题 1.1 问题描述 我有 1tb 的一个大索引若干,要迁移到另外一个新集群去,有没有好办法?reindex好像会中断...... reindex 是不是就算设置了频率也会莫名的中断,而且没地方查到错误?1000多万的数据&…

【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏4(附项目源码)

文章目录 本节最终效果前言命中敌人闪白和击退效果敌人死亡效果等级 击杀数 经验绘制经验条显示等级和杀敌数游戏倒计时玩家血条参考源码完结 本节最终效果 前言 本节紧跟着上一篇,主要实现敌人受击死亡效果特效,主角等级、击杀数、经验、血条UI显示。 …

SpringBoot : ch09 整合Redis

前言 当你的应用程序需要一个快速、可扩展的内存数据库时,Redis是一个非常流行的选择。通过将Redis与Spring Boot集成,你可以轻松地利用Redis的功能,例如缓存、会话存储和消息队列等,从而提升应用程序的性能和可伸缩性。 在本教…

使用Pytorch从零开始构建扩散模型-DDPM

知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II 引言 去噪…

Unity之ARFoundation如何实现BodyTracking人体跟踪

前言 ARBodyTracking,就是指通过手机AR扫描并精确的捕获人物的肢体部位的技术。如下图所示 这项技术目前是有苹果的ARKit提供,苹果的body tracking 功能需要使用配备 TrueDepth 摄像头的设备,配备 A12 仿生芯片、运行 iOS 13 或更高版本的设备,比如 iPhone X 及更新机型。…

群晖NAS配置之自有服务器ngrok实现内网穿透

群晖NAS配置之自有服务器ngrok实现内网穿透 前言-内网穿透 内网穿透是指通过一种技术让外部网络可以访问到内网的NAS设备,这样即使在不同网络环境下,也能够远程访问和管理NAS设备。以下是一些常见的内网穿透方案: Synology官方提供的Quick…

Leetcode 380. O(1) 时间插入、删除和获取随机元素

文章目录 题目代码(11.28 首刷看解析) 题目 Leetcode 380. O(1) 时间插入、删除和获取随机元素 代码(11.28 首刷看解析) 1.length:表示的是数组的长度 数组 2.length():表示的是字符串的长度 字符串 3.size():表示的是集合中有多…

数据分析工具比较:Excel vs Python vs R

写在开头 在数据分析的世界里,选择合适的工具至关重要。本篇博客将深入比较常用的数据分析工具,包括Excel、Python和R,以帮助读者更好地选择适合自己需求的工具。 1.Excel:经典易用的电子表格 优势: 用户友好: Excel是大多数人熟悉的电子表格工具,使用简单,无需编程…

【数据结构】排序效率最优解之一:二叉树-堆

Hello everybody!今天打算给大家介绍一个功能比较强大的数据结构的基础,它不仅具有很高的应用价值而且排序效率很高。冒泡排序都知道叭,它的时间复杂度为O(n^2),而堆排序的时间复杂度为O(n*logn)。堆排序直接碾压冒泡排序。在c语言阶段&#…

OpenCV | 模版匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像,模版在原图像上从原点开始滑动,计算模版与(图像被模版覆盖的地方&#xff…