博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-中间件
阅读量:5126 次
发布时间:2019-06-13

本文共 2227 字,大约阅读时间需要 7 分钟。

1.django中间件的5个方法

process_request(self,request)

process_view(self, request, callback, callback_args, callback_kwargs)
process_template_response(self,request,response)
process_exception(self, request, exception)
process_response(self, request, response)

以上方法的返回值可以是HttpResponse对象和None值,如果是None则按照规则继续执行,如果为HttpResponse对象则直接将对象返回

2.django中间件的执行流程

(1)首先执行process_request函数,中间如果出现异常,则跳转到当前中间件的response函数中执行并返回。

(2)如果process_request执行结束,则会执行process_view函数,view的功能是与处理函数view执行了一次路由映射
(3)通过response返回给客户端
(4)process_exception是进行异常捕捉,如果视图函数view中运行错误,则调用此函数进行捕捉
(5)运行视图函数时,会进行异常捕捉,没有捕捉到异常则报错,捕捉到异常则会进行跳转最底层的response中返回
(6)process_template_response(self,request,response)->了解一下即可

3.自定义中间件

创建目录Middle,创建middleware.py文件from django.utils.deprecation import MiddlewareMininclass row1(MiddlewareMinin):    def process_request(self,request):        print("request-1")    def process_response(self,request,response):        print("response-1)"        return response     def process_view(self, request, callback, callback_args, callback_kwargs):        print("view-1")    class row2(MiddlewareMinin):    def process_request(self,request):        print("request-2")    def process_response(self,request,response):        print("response-2)"        return response         def process_view(self, request, callback, callback_args, callback_kwargs):        print("view-2")class row3(MiddlewareMinin):    def process_request(self,request):        print("request-3")    def process_response(self,request,response):        print("response-3)"        return response     def process_view(self, request, callback, callback_args, callback_kwargs):        print("view-3")

4.中间件注册

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.middleware.Row1',#自定义中间的注册    'Middle.middleware.Row2',    'Middle.middleware.Row3',]

注意,中间件的执行顺序按照配置自上向下

转载于:https://www.cnblogs.com/wangxingwei/p/10956130.html

你可能感兴趣的文章
贝叶斯理论基础理解
查看>>
2018java最新面试题
查看>>
PHP编写命令行脚本和后台运行程序的注意事项
查看>>
php 换行 PHP_EOL变量
查看>>
JS中关于clientWidth、offsetWidth、scrollWidth
查看>>
Telerik Reporting之生成报表
查看>>
不要怂!就是干!
查看>>
11.8学习笔记
查看>>
[BZOJ 5074] 小B的数字
查看>>
Java并发编程笔记之ThreadLocal内存泄漏探究
查看>>
BZOJ5020: [THUWC 2017]在美妙的数学王国中畅游(LCT,泰勒展开,二项式定理)
查看>>
Java并发编程笔记之Semaphore信号量源码分析
查看>>
Asp.net--DropDownList控件绑定数据库数据
查看>>
(IOS)截图Demo
查看>>
[原创]mybatis中整合ehcache缓存框架的使用
查看>>
尚未注册 OLE DB 访问接口 "SQLNCLI10" 7043 错误
查看>>
c# list中的removeAll方法 两个List集合去除交集部分
查看>>
团队冲刺第一天
查看>>
随机系列生成算法(随机数生成)
查看>>
jmeter自定义并发用户数图形插件介绍
查看>>