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

    一、Django请求生命周期

    浏览器 → wsgi模块 → 中间件 → urls控制器 → 视图函数 → 数据库/模板渲染

      ↑                               ↓

      *     ←    wsgi模块       ←       中间件       ←      识图函数  ←  *

     

     

     二、中间件介绍

    中间件顾名思义 是介于request与response处理之间的一道处理过程 相比较轻量级 并且在全局上改变django的输入与输出。 

    django中默认自带的一些中间件(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',
        'apptest',
    ]

     三、自定义中间件

     中间件可以定义五个方法 分别是 

    • process_request(self,request)
    • process_view(self,request,view_func,view_args,view_kwargs)
    • process_template_response(self,request,response)
    • process_exception(self,request,exception)
    • process_response(self,request,response)

    自定义一个中间件示例 

    from django.utils.deprecation import MiddlewareMixin
    from django.urls import reverse
    from django.shortcuts import HttpResponse,redirect
    
    class MD1(MiddlewareMixin):
        def process_request(self,request):
            # 请求来时 过中间件会自动执行 正常返回None 异常可以回复HttpResponse对象,由上而下执行
            print('hi MD1的请求')class MD2(MiddlewareMixin):
        def process_request(self,request):
            print('Md2的process_request')
            pass

      

     process_request

    有一个参数,就是request,这个request和视图函数中的request是一样的

     

     

     

  • 相关阅读:
    xyplorer设置备忘
    如何在CentOS 8上安装Python2 Python3
    为CentOS 8操作系统安装MySQL的方法,以安装MySQL 8为例
    SSH登录服务器报ECDSA host key "ip地址" for has changed and you have requested strict checking
    Linux常用命令大全
    转载:php的几种常用的数据交换格式
    转:GBK编码 VS UTF8编码
    转载:中文在UTF8和GBK编码中的范围
    转:SDL Specification and Description Language 简介
    转:Java中Split函数的用法技巧
  • 原文地址:https://www.cnblogs.com/lttlpp61007188/p/10969373.html
Copyright © 2011-2022 走看看