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

    自定义中间件

    第一步:在根目录创建路径Middle/m1.py(注意如果是python2的话Middle下要有__init__.py文件,不然会报找不到模块错误)
    m1.py的内容:
     1 # -*- coding: utf-8 -*-
     2 from django.utils.deprecation import MiddlewareMixin
     3 from django.shortcuts import HttpResponse
     4 
     5 class Row1(MiddlewareMixin):
     6     def process_request(self,request):
     7         print ('第一步')
     8 
     9     def process_view(self, request, view_func, view_func_args, view_func_kwargs):
    10         print('中间第一步')
    11 
    12     def process_response(self,request,response):
    13         print ('倒数第一步')
    14         return  response
    15 
    16 class Row2(MiddlewareMixin):
    17     def process_request(self,request):
    18         print ('第2步')
    19 
    20     def process_view(self, request, view_func, view_func_args, view_func_kwargs):
    21         print('中间第2步')
    22 
    23     def process_response(self,request,response):
    24         print ('倒数第2步')
    25         return  response
    26 
    27 class Row3(MiddlewareMixin):
    28     def process_request(self,request):
    29         print ('第3步')
    30 
    31     def process_view(self, request, view_func, view_func_args, view_func_kwargs):
    32         print('中间第3步')
    33 
    34     def process_response(self,request,response):
    35         print ('倒数第3步')
    36         return  response
    37 
    38     def process_exception(self, request, exception):
    39         if isinstance(exception,ValueError):
    40             return HttpResponse('出现异常》。。')
    41 
    42     def process_template_response(self,request,response):
    43         # 如果Views中的函数返回的对象中,具有render方法
    44         print('-----------------------')
    45         return response
    View Code
    项目setting.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',
        'Middle.m1.Row1',
        'Middle.m1.Row2',
        'Middle.m1.Row3',
    ]
    View Code

    实际输出结果:

    第一步
    第2步
    倒数第2步
    倒数第一步
    View Code

    中间件的作用流程

     

    实际的请求流程图:

  • 相关阅读:
    13.6 线程通信
    13.5 线程同步
    13.4 控制线程
    13.3 线程的生命周期
    13.2 线程的创建与启动
    13.1 线程概述
    12.10 NIO.2的功能和用法
    bs4
    mysql基本命令
    HDU-1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/qiangayz/p/8999967.html
Copyright © 2011-2022 走看看