zoukankan      html  css  js  c++  java
  • Django学习系列之中间件

    中间件的定义

    • 中间件是一个、一个的管道,如果相对任何所有的通过Django的请求进行管理都需要自定义中间件

    • 中间件可以对进来的请求和出去的请求进行控制

    • 中间件是一类

    django请求生命周期

    自定义中间件

    • process_request(self,request): 请求到达之后之后先执行这个中间件  
    • process_view(self, request, callback, callback_args, callback_kwargs):
    • process_exception(self, request, exception) 这个方法只有在出现错误的时候才会触发
    • process_response(self, request, response):请求处理完成出去之后执行这个自己解决
    • process_template_response(self,request,response) 这个方法只有在返回对象中有render方法的时候才执行,如render_to_response('/index/')

    实例

    编写中间件

    from  django.utils import deprecation
    
    class M1(deprecation.MiddlewareMixin):
        def process_request(self,request):
            print('M1.process_request')
    
        def process_response(self,request,response):
            print('M1.process_response')
            return response

    注册中间件

    MIDDLEWARE = [
        'middle.middle1.M1',  #中间件地址,middle目录下的middle.py文件下的MI
        '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',
    ]
    #由于中间件是对全局生效的,所以需要注意

    定义视图函数

    def login(request):
        print('123')
        return HttpResponse("ok")

    测试

    随便找一个url,访问127.0.0.1:8000/login

    M1.process_request  #请求到来 先走request中间件
    123                 #视图函数本身输出123
    M1.process_response #最后走response        
  • 相关阅读:
    spring boot 2+activiti 6.0 手把手带你学习activiti
    js自定义验证码
    [C#] OpenXml导出Excel,设置单元格格式,自动设置列宽
    [WPF] 自定义分页控件,可通过样式模板修改外观
    [WPF] 默认滚动条,通过附加属性和样式实现自定义
    王道考研数据结构错题集
    django rest framework 反序列化过程剖析
    django rest framework响应数据的源码分析
    django rest framework序列化过程剖析
    java源码学习(二)Integer
  • 原文地址:https://www.cnblogs.com/chadiandianwenrou/p/6507198.html
Copyright © 2011-2022 走看看