自定义django中间件
2024-09-05 20:22:36
自定义中间件
第一步:在根目录创建路径Middle/m1.py(注意如果是python2的话Middle下要有__init__.py文件,不然会报找不到模块错误)
m1.py的内容:
# -*- coding: utf-8 -*-
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse class Row1(MiddlewareMixin):
def process_request(self,request):
print ('第一步') def process_view(self, request, view_func, view_func_args, view_func_kwargs):
print('中间第一步') def process_response(self,request,response):
print ('倒数第一步')
return response class Row2(MiddlewareMixin):
def process_request(self,request):
print ('第2步') def process_view(self, request, view_func, view_func_args, view_func_kwargs):
print('中间第2步') def process_response(self,request,response):
print ('倒数第2步')
return response class Row3(MiddlewareMixin):
def process_request(self,request):
print ('第3步') def process_view(self, request, view_func, view_func_args, view_func_kwargs):
print('中间第3步') def process_response(self,request,response):
print ('倒数第3步')
return response def process_exception(self, request, exception):
if isinstance(exception,ValueError):
return HttpResponse('出现异常》。。') def process_template_response(self,request,response):
# 如果Views中的函数返回的对象中,具有render方法
print('-----------------------')
return response
项目setting.py中间件的内容:
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',
'Middle.m1.Row1',
'Middle.m1.Row2',
'Middle.m1.Row3',
]
实际输出结果:
第一步
第2步
倒数第2步
倒数第一步
中间件的作用流程
实际的请求流程图:
最新文章
- 小tips合集
- 从零开始学 Java - Spring 使用 Quartz 任务调度定时器
- Spring+EhCache缓存实例
- objc@interface的设计哲学与设计技巧
- [Bug]当IDENTITY_INSERT设置为OFF时,不能为表“xx”中的标识列插入显示的值
- C# 模拟鼠标写字
- python还不能作为主要编程语言的原因:
- atitit.提升稳定性---hibernate 添加重试retry 机制解决数据库连接关闭
- IntelliJ IDEA中类似Eclipse自动补全变量名称和属性名称的快捷键
- (转ORCLE导入导出命令)
- File类实现文件夹和文件复制
- git命令行常用几个指令(细节问题)
- .NET Core 技巧汇总篇
- L1范数与L2范数​
- python3-基础6
- Ubuntu1404安装eclipse(目的是为了运行python,当然java更可以)
- RFC
- 练习:将值是null的数据删除掉(剔除):com.fasterxml.jackson.annotation.JsonInclude;包
- mysql中文编码问题
- C# to IL 8 Methods(方法)
热门文章
- Linux校园网DNS问题
- 【leetcode】1122. Relative Sort Array
- Serverless 实战 —— 函数计算 + Typescript 实践
- 事物Spring boot @Transactional
- JWT--无状态单点登录
- PHP文件的上传和下载
- Java——容器(Comparable)
- RedisTemplate访问Redis数据结构(二)——List
- session.flush()与session.clear()的区别
- vue 使用props 实现父组件向子组件传数据