• 浅谈Django的中间件与Python的装饰器


    浅谈Django的中间件 与Python的装饰器

    一、原理

    1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该函数。在开发项目中,通常使用装饰器来管理权限,登录等等,配上Python的 @ 语法糖,轻松实现代码的重用性和低耦合性。

    2.而Django中的中间件是利用面向切面的编程思想,对Django服务器访问过程中间进行干预。

    • 是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出

    • 激活:添加到Django配置文件中的MIDD

    • LEWARE_CLASSES元组中
      每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个

    • _init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件

    • process_request(request):执行视图之前被调用,在每个请求上调用,返回None或HttpResponse对象

    • process_view(request, view_func, view_args, view_kwargs):调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象

    • process_template_response(request, response):在视图刚好执行完毕之后被调用,在每个请求上调用,返回实现了render方法的响应对象

    • process_response(request, response):所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象

    • process_exception(request,response,exception):当视图抛出异常时调用,在每个请求上调用,返回一个HttpResponse对象使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法

    二、联系及区别

    • 联系:中间件是利用装饰器原理实现的,具体通过两个函数嵌套、或通过改写类中的__ call __方法实现一个装饰器功能。使之过来的Request的请求,先到call方法中进行处理。配置中间件,实现过程干预。
    • 区别:一个是Python的语法功能,一个是Django 框架自带的轻量级插件系统。
  • 相关阅读:
    lvs+keepalived集群架构服务
    GlusterFS分布式存储系统
    Zabbix监控平台(三)生产环境案例
    Zabbix监控平台(二)深入了解
    Zabbix监控平台(一)搭建部署与概述
    Memcached数据库缓存
    Mariadb 基于Mycat实现读写分离
    基于mysqld_multi实现MySQL多实例配置
    tomcat-APR配置及三种工作模式简介
    Session服务器之Memcached与Redis
  • 原文地址:https://www.cnblogs.com/SutCoderHang/p/9982817.html
Copyright © 2020-2023  润新知