Django中间件技术

怎么理解中间件呢,其实如果你使用过java和数据库你就知道,中间件技术是两个模块中间的桥梁,就好比两块大陆之间的一座桥梁

如果需要详细了解中间件技术可以查看此文档
百度中间件技术

  • java中间件技术 jdbc
  • oracle中间件技术 odbc

今天我们要讲的是python中间件技术,首先给大家画个图

在这里插入图片描述

怎么理解这张图呢,其实我们在python的django这个模块中的中间件就是相当于过滤器一样,过滤相关信息,例如对不合理的IP地址进行禁止。

接下来我们来具体实现这个中间件技术

在这里插入图片描述

首先我们在app下面创建一个py文件, 这个py文件名字可以随便取,我这里是mymiddleware.py文件

from django.http import HttpResponse
from django.utils import deprecation

class BlockIPSMiddleware(deprecation.MiddlewareMixin):
    '''中间件'''
    EXCLUDE_IPS = ['192.168.60.26', '127.0.0.1']

    def process_view(self, request, view_func, *view_args, **view_kwargvs):
        '''在调用试图之前会调用这个函数'''
        user_ip = request.META['REMOTE_ADDR']  # 获取请求的IP地址
        print(user_ip)
        if user_ip in self.EXCLUDE_IPS:
            return HttpResponse('<h1>你被禁止访问了</h1>')

我们在创建这个类的时候继承系统自带的这个系统类**deprecation.MiddlewareMixin**

  • EXCLUDE_IPS 是一个集合
  • process_view是固定的方法名称
  • request.META[‘REMOTE_ADDR’]是拿到浏览器访问服务器的时候浏览器的地址

也就是说在浏览器访问试图之前,会先调用这个函数,但是到这里还没有完成,还有最后一步

注册

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',
	# 这个是自定义的中间件技术,上面是系统自带的中间件技术
    'booktest.mymiddleware.BlockIPSMiddleware',
]

到这里完整的流程就算结束了

扩展一点

在继承deprecation.MiddlewareMixin这个类的时候,我们需要注意的是,这个类下面是有四个接口需要我们注意的

	 # 本次将要执行的view函数被调用前调用本函数
    def process_view(self, request, view_func, *view_args, **view_kwargvs):
       pass

    # 请求到来的时候调用
    def process_request(self,request):
        pass
    # 在执行完本view函数准备将响应发到客户端前被执行
    def process_response(self,request,response):
        pass
    #view函数在抛出异常的死后该函数被调用,得到的exception参数是实际上抛出的异常实例
    def process_exception(self,request,exception):
        pass

上面的代码实现了第一个接口,其他的接口读者可以自己去试试看,,总结一点,我们这里的中间件表示的就是浏览器在访问服务器的时候对各种状态进行捕捉的情况

posted @   飞航之梦  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示