django_中间件(view层无参数使用)

一、什么是中间插件

我理解的中间插件就是过滤器的一起,所有的请求,先到中间插件过滤,过滤后进行url匹配,到对应的view方法,response返回给中间插件,中间插件蹭蹭层层返回给用户。根据这个描述我们可以画个图

image.png

二、如何配置中间件
创建一个文件目录


image.png

导入中间件文件目录

image.png

通过代码验证猜想

  • 知识点from django.utils.deprecation import MiddlewareMixin继承类
  • 接受请求的方法名process_request()
  • 返回响应的方法名process_response()
  • 参数reuqest等同于view中的request
from django.utils.deprecation import MiddlewareMixin
from  django.shortcuts import HttpResponse
class test1(MiddlewareMixin):
    def process_request(self,request):
        print("1号请求")


    def process_response(self,request,response):
        print("1号响应")
        return  response


class test2(MiddlewareMixin):
    def process_request(self, request):
        print("2号请求")

    def process_response(self, request, response):
        print("2号响应")
        return response

打印结果,其中我在view层加了一个print输出

1号请求
2号请求
view响应
2号响应
1号响应

当中间插件过滤到问题时,返回的机制当在过滤器中遇到了不会合格的,不会经过view层只会直接返回,如图


image.png

代码如下:

from django.utils.deprecation import MiddlewareMixin
from  django.shortcuts import HttpResponse
class test1(MiddlewareMixin):
    def process_request(self,request):
        print("1号请求")
        #拦截
        return HttpResponse("ok")


    def process_response(self,request,response):
        print("1号响应")
        return  response


class test2(MiddlewareMixin):
    def process_request(self, request):
        print("2号请求")

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

推荐阅读更多精彩内容