Django-中间件(切面编程AOP)

自定义中间件

官网:中间件 | Django 文档 | Django

中间件使用多就在主应用创建,仅限于子应用就在子引用中创建中间件文件.py

之后在settings.py文件中去配置中间件,运行的时候会自动调用中间件

python 复制代码
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函数

process_view() 只在 Django 调用视图前被调用,它应该返回 NoneHttpResponse 对象。

  • 返回 None ,Django 将继续处理这个请求,执行任何其他的 process_view() ,然后执行相应的视图
  • 如果它返回 HttpResponse 对象,Django 不会去影响调用相应的视图;它会将响应中间件应用到 HttpResponse 并返回结果。

process_view(request, view_func, view_args, view_kwargs)

  • request 是一个 HttpRequest对象

  • view_func 是一个 Django 将要使用的 Python 函数。(这是一个真实的函数对象,不是函数的名称)

  • view_args 是一个用来传递给视图的位置参数列表

  • view_kwargs 是一个用来传递给视图的关键字参数字典

    提示

    view_args 和 view_kwargs 都不包含第一个视图参数 ( request )


    中间件的应用场景

  • 网站维护更新,不让用户访问可以使用中间件

python 复制代码
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',  # 网站维护使用
]
python 复制代码
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
相关推荐
张高兴9 分钟前
张高兴的 Hailo-10 开发指南:(二)使用 LangChain 搭建本地大模型 RAG 问答应用
python·边缘计算·hailo
财经资讯数据_灵砚智能23 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月6日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
Land032934 分钟前
Python + RPA 双引擎实战:从手写脚本到可交付自动化应用的完整链路
python·自动化·rpa
菜到离谱但坚持1 小时前
【小白零基础】RAG+LangChain 搭建私有知识库问答系统(完整可运行代码+超详细教程+避坑指南)
python·langchain·rag
ss2731 小时前
【入门OJ题解】分苹果问题(Python/Java/C 实现)
java·c语言·python
IsJunJianXin1 小时前
谷歌搜索cookie NID逆向生成
开发语言·python·google搜索·sgss·nid-cookie·算法生成nid·google-cookie
暗夜猎手-大魔王1 小时前
转载--Hermes Agent 11 | 智能审批与平台化安全:当 AI 来守护 AI
人工智能·python·安全
AIFQuant1 小时前
量化私募回测系统:高质量股票/外汇历史数据 API 选型与接入
python·websocket·金融·ai量化
Mr.Daozhi1 小时前
Playwright实战:抓取Meta Ad Library动态页面的三级降级策略
爬虫·python·自动化·playwright·meta广告
财经资讯数据_灵砚智能1 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月5日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能