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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值