Django 2.1.3 中间件实战:全局异常处理与日志记录详解

清欢
清欢
发布时间:2026-10-13| 5人浏览过
原创

本文基于Django 2.1.3环境,详细讲解中间件的配置与执行流程。通过自定义CustomMiddleware类,演示如何在settings.py中注册中间件,并实现全局异常捕捉(process_exception)与请求日志记录(process_view)。包含完整的代码示例、路由配置及测试步骤,帮助开发者掌握Django中间件的常见用途与最佳实践。

开发环境配置

  • 操作系统:Windows 10
  • Python版本:3.6.6
  • Django框架:2.1.3

中间件的核心作用在于对Django的输入或输出进行全局性的修改与处理。

中间件在Django开发中有着广泛的应用场景。

  • 数据缓存处理
  • 用户会话与身份认证
  • 系统日志记录
  • 全局异常捕获与处理

理解中间件的执行流程是正确使用的前提。

下面将通过一个具体的例子,演示如何实现全局异常捕捉功能。

首先创建Django项目并添加对应的应用(app)。

django-admin startproject middleware
cd middleware
django-admin startapp app

将新创建的app添加到项目的配置文件中。

# middleware/settings.py
# INSTALLED_APPS最后添加 app
INSTALLED_APPS = [
 'app',
]

编辑中间件文件,并将其注册到项目中。

注意:中间件在列表中的注册顺序与请求处理的关联性紧密,位置不可随意调整。

# 创建app/middleware.py并编辑
from django.http import JsonResponse


class CustomMiddleware:
 def __init__(self, get_response):
  print("程序启动时执行, 只执行一次")
  self.get_response = get_response

 def __call__(self, request):
  print("中间件开始")
  response = self.get_response(request)
  print("中间件结束")
  return response

 def process_view(self, request, view_func, view_args, view_kwargs):
  print("请求实际函数前执行")

 def process_exception(self, request, exception):
  print("程序异常时执行")
  return JsonResponse({"msg": exception.args[0], "code": -1})

修改middleware/settings.py文件以注册中间件。

MIDDLEWARE = [
...
'app.middleware.CustomMiddleware'
]

在视图函数中故意编写一个会引发异常的代码用于测试。

# app/views.py
from django.http import JsonResponse


def json_response(request):
 print('json_response')
 err = 3 / 0
 return JsonResponse({"msg": "ok", "code": 0})

将测试视图添加到路由配置中。

# middleware/urls.py

from app.views import json_response, view_response

urlpatterns = [
 ...
 path("view", view_response)
]

启动服务并运行测试用例。

访问测试地址:http://127.0.0.1:8000/json/

查看返回的结果以验证异常处理是否生效。

此外,日志记录也是中间件的另一个常见用途。

# 在中间件函数process_view中添加
print("path: {}; method: {}; data: {}".format(request.get_full_path(), request.method, request.body or ''))

官方参考文档:https://docs.djangoproject.com/zh-hans/2.1/topics/http/middleware/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。