Django中间件技术

妖狐艹你老母 2022-04-17 05:06 368阅读 0赞

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

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

  1. from django.http import HttpResponse
  2. from django.utils import deprecation
  3. class BlockIPSMiddleware(deprecation.MiddlewareMixin):
  4. '''中间件'''
  5. EXCLUDE_IPS = ['192.168.60.26', '127.0.0.1']
  6. def process_view(self, request, view_func, *view_args, **view_kwargvs):
  7. '''在调用试图之前会调用这个函数'''
  8. user_ip = request.META['REMOTE_ADDR'] # 获取请求的IP地址
  9. print(user_ip)
  10. if user_ip in self.EXCLUDE_IPS:
  11. return HttpResponse('<h1>你被禁止访问了</h1>')

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

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

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

注册

  1. MIDDLEWARE = [
  2. 'django.middleware.security.SecurityMiddleware',
  3. 'django.contrib.sessions.middleware.SessionMiddleware',
  4. 'django.middleware.common.CommonMiddleware',
  5. 'django.middleware.csrf.CsrfViewMiddleware',
  6. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  7. 'django.contrib.messages.middleware.MessageMiddleware',
  8. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  9. # 这个是自定义的中间件技术,上面是系统自带的中间件技术
  10. 'booktest.mymiddleware.BlockIPSMiddleware',
  11. ]

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

扩展一点

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

  1. # 本次将要执行的view函数被调用前调用本函数
  2. def process_view(self, request, view_func, *view_args, **view_kwargvs):
  3. pass
  4. # 请求到来的时候调用
  5. def process_request(self,request):
  6. pass
  7. # 在执行完本view函数准备将响应发到客户端前被执行
  8. def process_response(self,request,response):
  9. pass
  10. #view函数在抛出异常的死后该函数被调用,得到的exception参数是实际上抛出的异常实例
  11. def process_exception(self,request,exception):
  12. pass

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

发表评论

表情:
评论列表 (有 0 条评论,368人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Django中间技术

    怎么理解中间件呢,其实如果你使用过java和数据库你就知道,中间件技术是两个模块中间的桥梁,就好比两块大陆之间的一座桥梁 > 如果需要详细了解中间件技术可以查看此文档

    相关 django中间

    中间件函数是django框架给我们预留的函数接口,让我们可以干预请求和应答的过程。 ![1682918-20190610110717958-1367766905.png][]