python middleware_Django框架教程之中间件MiddleWare浅析
前言
Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。
中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。
我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。
中间件的原理其实就是定义了一个装饰器,但是这个装饰器可以对整个项目中的所有方法进行装饰;
我们可以通过中间件,对请求对象和响应对象进行相应的干预操作。
实现中间件的流程:
1.在子应用中编写一个middleware.py的文件
def my_middleware(get_response):
print('中间件初始化')
def middlewraer(request, *args, **kwargs):
print('在执行执行前对请求进行干预')
# 加入干预代码, 主要应用白名单黑名单
if request.META['USER'] == 'KG':
return HttpResponse('该用户无法访问')
ret = get_response(request, *args,**kwargs)
print('在执行后对响应进行干预')
return ret
return middlewrae
2. 在setting文件中注册中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 注册中间件
'users.middleware.my_middleware',
]
注意:Django运行在调试模式下,中间件init部分有可能被调用两次。
多个中间件执行流程:
1. 中间件会将setting文件中的MIDDLEWARE列表进行逆序,所以初始化的顺序时从下向上的;
2. 在调用时,即编写顺序上第一个中间件装饰的是编写顺序上的第二个中间件,而编写顺序上的第二个中间件装饰的才是视图函数;
3. 在调用结束返回时,会先将视图函数的结果返回给编写顺序上的第二个中间件,然后再返回给编写顺序上的第一个中间件。
代码解读:
@decorator1
@decorator2
def index(View):
pass
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。
python middleware_Django框架教程之中间件MiddleWare浅析相关推荐
- python middleware_Django框架之中间件MiddleWare的实现
Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出. 中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的 ...
- python flask框架教程_Flask框架从入门到实战
Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...
- python爬虫框架教程_Python爬虫实战(十二):爬虫框架Scrapy的第一个爬虫示例入门教程...
本文主要向大家介绍了Python爬虫实战的爬虫框架Scrapy的第一个爬虫示例入门教程,通过具体的内容向大家展现,希望对大家学习Python爬虫实战有所帮助. 我们使用dmoz.org这个网站来作为小 ...
- 框架下载_25. Scrapy 框架-下载中间件Middleware
1. Spider 下载中间件(Middleware) Spider 中间件(Middleware) 下载器中间件是介入到 Scrapy 的 spider 处理机制的钩子框架,您可以添加代码来处理发送 ...
- python Flask框架如何请求及返回数据——flask详细教程
python Flask框架如何请求及返回数据--flask详细教程 文章目录: 1 Flask介绍 1.1 Flask简单介绍 1.2 Flask相关资料信息 2 Flask快速入门 2.1 Fla ...
- python框架 mysql数据库_在Python的框架中为MySQL实现restful接口的教程
最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收拢到DBGate,可以使DBGate变为无状态的,方便横向扩展 当请求量或者存储量变大时,mys ...
- python bottle框架 运维_python bottle框架(WEB开发、运维开发)教程 | linux系统运维...
教程目录 一:python基础 二:bottle基础 python bottle 框架基础教程:环境部署 三:WEB开发教程 四:运维开发教程 运维开发(1.1):框架.结构介绍 运维开发(1.2): ...
- Python学习教程:Python自动化测试框架需要学习哪些?
需要掌握学习Python自动化测试框架有哪些?常用的Python自动化测试框架有Robot Framework.Pytest.UnitTest/PyUnit.Behave.Lettuce.软件测试的自 ...
- python数据挖掘系列教程——PySpider框架应用全解
全栈工程师开发手册 (作者:栾鹏) python教程全解 python数据挖掘系列教程--PySpider框架应用全解. PySpider介绍 pyspider上手更简单,操作更加简便,因为它增加了 ...
最新文章
- Xamarin.Android提示aapt退出,代码为255
- c语言获取时间并存储,如何在C程序中获取日期和时间值?
- linux驱动中使用定时器
- Basic--Java基本语法
- 学习搭建谷粒商城微服务框架(Docker配置)-01
- 戴尔电脑重装win10系统
- 【转】你真的理解Python中MRO算法吗?
- 电脑局域网所有IP及对应MAC地址查询
- 【opencv-python】视频处理(5) cv2.VideoCapture.grab()函数、cv2.VideoCapture.retrieve()函数
- 为什么大部分企业面试官都会问GMV,GMV是什么?
- 领域驱动设计 -- 领域驱动建模与面向对象建模的差异(一)
- C语言基础题-水仙花数
- [总结] better fog
- 特征函数篇2——与概率密度的函数
- JDK 16 即将发布!网友:新特性挺酸爽a...
- 浅谈冷启动问题 (推荐系统相关)
- 梳理 React 知识笔记 从入门到放弃 !框架必知的知识点
- k8s - 常用命令
- 程序数据集散地:数据库(3)
- 程序员编程艺术:第三章、寻找最小的k个数
热门文章
- Linux搭建ElasticSearch(ES)集群并设置密码登录
- 如何快速高效地进行seo域名批量查询
- 振憾 ajax与yahoo map加上美国各大赛事的widget
- 爱情的诗·16~20节
- 关于wangeditor取消自动获取焦点
- 阿里下放自动驾驶,汽车业务是个坑,或是时候探讨下一个乐视了
- java json转换xml格式_在Java中将JSON对象转换为XML格式?
- 惠普服务器DPS-460EB电源维修,DPS-460EB A 04F 499249-001 460W DL380G6 HP服务器电源
- 【值传递和引用传递之外的第三种传值方式 - 传名参数】
- GC (Allocation Failure) 那些事