day64 django中间件的复习使用

news2024/11/24 17:03:23

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_request
        
        process_response
        
    2.了解即可
        process_view
        process_template_response
        process_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和response
            2.该方法必须返回一个HttpResponse对象
                1.默认返回的就是response
                2.你也可以自定义返回
            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.coloradmin.cn/o/1265539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java开发需要掌握的maven相关知识和Junit单元测试

maven简介 什么是maven: maven是一款管理和构建java项目的工具,是apache旗下的一个开源项目。 maven的作用: 依赖管理: 方便快捷的管理项目依赖的资源(jar包)。 项目构建: 标准化的跨平台&#…

MacBook如何远程控制华为手机?

将手机屏幕投影到电脑上可以提供更大的屏幕空间,方便观看电影、浏览照片、阅读文档等。然而,除了想将手机投屏到电脑,还想要在电脑上直接操作手机,有方法可以实现吗? 现在使用AirDroid Cast的远程控制手机功能就可以实…

【数据结构】树与二叉树(廿五):树搜索给定结点的父亲(算法FindFather)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲a. 算法FindFatherb. 算法解析c. 代码实现 3. 代码整合 5.3.1 树的存储结构 5. 左儿子右兄弟链接结构 【数据结构】树与二叉树(十九&…

Linux dig指令的十三种用法

文章目录 dig指令有哪些作用dig 具体用法推荐阅读 dig指令有哪些作用 DIG命令(Domain Information Groper命令)是一个网络工具,具有基本的命令行接口,用于进行不同的DNS(域名系统)查询。您可以使用DIG命令: 诊断您的域名服务器。检查所有这些服务器或每…

《数据结构与测绘程序设计》试题详细解析(仅供参考)

一. 选择题(每空2分,本题共30分) (1)在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入结点s,则执行( B )。 A. s->nextp->next; p->nexts; …

Qt路径和Anaconda中QT路径冲突(ubuntu系统)

最近做一个项目需要配置QT库,本项目配置环境如下: Qt version 5 Operating system, version and so on ubuntu 20.04 Description 之前使用过anaconda环境安装过QT5,所以在项目中CMakeLists文件中使用find_package时候,默认使用An…

C#,数值计算——插值和外推,径向基函数插值(RBF_inversemultiquadric)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class RBF_inversemultiquadric : RBF_fn { private double r02 { get; set; } public RBF_inversemultiquadric(double scale 1.0) { this.r02 Globals.SQR(scale); …

Spring Boot实现图片上传和展示

Spring Boot实现图片上传和展示 本文将介绍如何使用Spring Boot框架搭建后端服务,实现接收前端上传的图片并保存到resources/images目录下。同时,我们还将展示如何在前端编写一个HTML页面,实现上传图片和从resources/images目录下获取图片并…

PHP+vue+elementui高校学生社团信息管理系统o7q4a

社团是由高校用户依据兴趣爱好自愿组成,按照章程自主开展活动的用户组织。高校社团是实施素质教育的重要途径和有效方式,在加强校园文化建设、提高用户综合素质、引导用户适应社会、促进用户交流等方面发挥着重要作用,是新形势下有效凝聚用户…

[Python入门系列之十一]在windows上安装OpenCV

1-安装OpenCV 如果是python3.7–python3.9(已测试),直接安装即可 注:conda需要先激活虚拟环境后再安装 pip install opencv-python如果安装速度慢,使用下面的指令: pip install opencv-python -i https://pypi.tuna.tsinghua.e…

AIGC-文生视频

stable diffusion: stable diffusion原理解读通俗易懂,史诗级万字爆肝长文,喂到你嘴里 - 知乎个人网站一、前言(可跳过)hello,大家好我是 Tian-Feng,今天介绍一些stable diffusion的原理&#…

Micropython STM32F4外部中断实验

Micropython STM32F4外部中断实验 📌固件刷可参考前面一篇《STM32刷Micropython固件参考指南》🌿 相关篇《Micropython STM32F4入门点灯》📍固件下载:https://micropython.org/download/?mcustm32f4🔖本例程基于STM32…

「C++」红黑树的插入(手撕红黑树系列)

💻文章目录 📄前言红黑树概念红黑树的结构红黑树节点的定义红黑树的定义红黑树的调整 红黑树的迭代器迭代器的声明operator( )opeartor--( ) 完整代码 📓总结 📄前言 作为一名程序员相信你一定有所听闻红黑树的大名,像…

【区块链】产品经理的NFT初探

常见的FT如比特币(BTC),以太币(ETH)等,两个代币之间是完全可替换的。而NFT具有唯一性,不可以互相替换。本文作者对NET的发展现状、相关协议、应用场景等方面进行了分析,一起来看一下…

修复debain/ Ubuntu 中的“密钥存储在旧版 trust.gpg 密钥环中”问题

如果您在 Ubuntu 22.04 及更高版本中使用 PPA 或添加外部存储库,您很可能会看到如下消息: W: https://packagecloud.io/slacktechnologies/slack/debian/dists/jessie/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg),…

springcloud nacos配置优先级研究及配置管理最佳实践

目录 背景工具版本SpringCloud配置存放位置及相应优先级代码中nacosjar包外挂 多种配置共同存在时的优先级项目配置管理最佳实践无nacos的情况有nacos的情况 参考文献 背景 公司有很多应用是基于SpringBoot/SpringCloud开发。由于在配置文件中经常会涉及数据库账号密码之类的敏…

Gson的用法详解

一、简介 Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。 Gson官网:gson Gson源码地址:google/gson 二、依赖…

Long-Context下LLM模型架构全面介绍

深度学习自然语言处理 原创作者:cola 随着ChatGPT的快速发展,基于Transformer的大型语言模型(LLM)为人工通用智能(AGI)铺平了一条革命性的道路,并已应用于知识库、人机界面和动态代理等不同领域。然而,存在一个普遍的限制:当前许多…

Linux处理文件常见命令

目录 1 cp 2 rm 3 zip与unzip 3.1 zip 3.2 unzip 4 cd 5 ls 6 chmod 7 scp 7.1 文件在你操作的机器上,你要传给另一个机器 7.1.1 文件 7.1.2 文件夹 7.2 文件在另一个机器上,你要把文件搞到你操作的机器上 7.2.1 文件 7.2.…

NX二次开发UF_CURVE_create_arc_3point 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc_3point Defined in: uf_curve.h int UF_CURVE_create_arc_3point(tag_t point1, tag_t point2, tag_t point3, UF_CURVE_limit_p_t limit_p [ 2 ] , tag_t supp…