中间件使用多就在主应用创建,仅限于子应用就在子引用中创建中间件文件.py
之后在settings.py文件中去配置中间件,运行的时候会自动调用中间件
- def simple_middleware(get_response):
- def middleware(request):
- # 业务处理前
- response = get_response(request)
- # 业务处理后
- return response
- return middleware
-
-
- class SimpleMiddleware:
- def __init__(self, get_response):
- self.get_response = get_response
- # One-time configuration and initialization.
-
-
- def __call__(self, request):
- # 业务处理前
- response = get_response(request)
- # 业务处理后
- return response

process_view() 只在 Django 调用视图前被调用,它应该返回 None 或 HttpResponse 对象。
None ,Django 将继续处理这个请求,执行任何其他的 process_view() ,然后执行相应的视图process_view(request, view_func, view_args, view_kwargs)
request 是一个 HttpRequest对象
view_func 是一个 Django 将要使用的 Python 函数。(这是一个真实的函数对象,不是函数的名称)
view_args 是一个用来传递给视图的位置参数列表
view_kwargs 是一个用来传递给视图的关键字参数字典
提示
view_args 和 view_kwargs 都不包含第一个视图参数 ( 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',
-
- # 自定义中间件
- 'middle_app.middleware.UpwebMiddle', # 网站维护使用
- ]
- from django.http import HttpResponse
- from django.conf import settings
-
- class UpwebMiddle():
- def __init__(self, get_response):
- self.get_response = get_response
-
- def __call__(self, request):
- if request.path.startswith(settings.WH_URL):
- return HttpResponse("维护中无法访问")
- response = self.get_response(request)
- return response