django中间件

django中间件

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',
]

分析任意一中间件的源码

from django.middleware.security import SecurityMiddleware
class SecurityMiddleware(MiddlewareMixin):
    def __init__(self, get_response=None):
       pass
    def process_request(self, request):
      pass
    def process_response(self, request, response):
       pass

django支持程序自定义中间件,并暴露五个方法

重要
process_request
#从上往下依次执行
#如果有return返回值,就此隔断
process_response
#从下往上依次执行
了解
process_view
#路由匹配成功之后,视图函数之前
process_template_response
#返回的httpresponse对象有render属性的时候才会触发
process_exception
#当视图函数出现异常的时候触发

自定义中间件

1.创建一个文件夹(项目下或应用下)
2.文件夹中建一个py文件
3.继承类
4.配置

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',
    自己创建文件的路径
]

#创建文件
from django.utils.deprecation import MiddlewareMixin
class MyMiddleware(MiddlewareMixin):
    def process_request(self,request):
        print("第一个中间件的process_request方法")

#写配置
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',
    "app01.mymiddleware.mdd.MyMiddleware",
]
posted @ 2023-03-28 22:25  Bre-eZe  阅读(11)  评论(0)    收藏  举报