zoukankan      html  css  js  c++  java
  • django中间件

    为什么要使用中间件:

    所有的请求来了都会先走到中间件,不是urls,比如每一个请求都需要登录 ,每一次都需要校验token,那么每次都需要在views里面验证,在每次请求来之前都在中间件里面处理,如果token不对,直接返回,就不需要走到后面的流程了,效率就高了

    1.首先要在app的目录下建立一个py中间件文件middle_wares.py

    代码如下:

    from . import models
    class TestMiddleWare(MiddlewareMixin):
    
        def process_request(self,request):
            '''请求过来之后先走到的这里'''
            path = request.path_info
            interface = models.Interface.objects.filter(path = path).first()
            if interface:
                return HttpResponse(interface.response)
    
    
        def process_response(self,request,response):
            #拦截返回的
            print('response....')
            return response
    
        # def process_exception(self,request,exception):
        #     #拦截异常的
        #     print('出异常了。。')
        #     return HttpResponse('hhhh')
    

    2.然后需要在settings.py文件里面配置

    代码如下:

    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',
        'user.middle_wares.TestMiddleWare'
    ]
    

     3.

    无中间件的流程:client---urls -- views---content_process---response

    有中间件的流程:client---中间件---urls ---views ---content_process--response

  • 相关阅读:
    FreeRTOS相关转载-(朱工的专栏)
    任务相关的API函数-uxTaskGetSystemState
    STM32用FreeRTOS时任务优先级和中断优先级说明
    STM32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义
    C语言变量和函数命名规范
    Java学习笔记-命令模式
    leetcode-Search in Rotated Sorted Array -java
    Java学习笔记-单件模式
    Java学习笔记-问问题?-->静态方法
    TCP滑动控制
  • 原文地址:https://www.cnblogs.com/liulilitoday/p/13580986.html
Copyright © 2011-2022 走看看