Django - 中间件(Middleware)

中间间的作用:
1)可以查看请求头中有没有指定的键值对。比如:给接口加密,请求的时候要一个请求头部。

Django中settings.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',
]

自己写中间件

1)我们在新建目录Middleware下新建了m1.py模块。

process_request()方法里面,没有return,就是没有阻隔,就直接执行通过。

from django.utils.deprecation import MiddlewareMixin

class M1(MiddlewareMixin):
    def process_request(self,request):
        print ('request - 经过M1')
    def process_response(self, request, response):
        print ('response - 经过M1')
        return response

class M2(MiddlewareMixin):
    def process_request(self, request):
        print ('request - 经过M2')
    def process_response(self, request, response):
        print ('response - 经过M2')
        return response

2)在MIDDLEWARE中注册我们的中间件。

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',
    'Middleware.m1.M1',
    'Middleware.m1.M2',
]

请求的时候,就会经过这两个中间件。
打印效果为:

request - 经过M1
request - 经过M2
-------
response - 经过M2
response - 经过M1

process_view()函数作用

改变路径,也就是到那个中间件,之后,又返回重新执行。

图片.png
class M2(MiddlewareMixin):
    def process_request(self, request):
        print ('request - 经过M2')

    def process_view(self, request, view_func, view_func_args, view_func_kwargs):
        print ('process_view - M2')

    def process_response(self, request, response):
        print ('response - 经过M2')
        return response

view_func就是views.py中的函数。
view_func_argsview_func_kwargs就是函数参数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Refer to: www.threemeal.com/blog/12/ 中间件 中间件是一个钩子框架,它们可以介...
    兰山小亭阅读 16,542评论 9 165
  • Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606网站:h...
    布客飞龙阅读 786评论 0 37
  • 中间件是一个钩子框架,它们可以介入Django 的请求和响应处理过程。它是一个轻量级、底层的“插件”系统,用于在全...
    低吟浅唱1990阅读 525评论 0 0
  • Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输...
    mlj0503阅读 424评论 0 0
  • 13 上线 上一章中,你为你的项目创建了RESTful API。在本章中,你会学习以下知识点: 配置一个生产环境 ...
    lakerszhy阅读 1,531评论 1 6