Django 中间件和路由器的交互如何?
在 Django 中,中间件是一种类,用于在请求和响应处理过程中执行一些特定任务。中间件可以添加、修改或删除请求或响应,也可以将额外的功能添加到视图函数之前或之后。
在请求到达 Django 应用程序时,Django 会根据路由器确定要使用哪个视图函数来处理请求。路由器将 URL 与 URL 模式匹配,并调用相应的视图函数。
中间件和路由器的协作如下:
- 请求到达 Django 应用程序。
- 中间件开始处理请求。中间件可以修改请求的内容,添加请求头部或进行其他处理。
- 路由器将请求与 URL 模式匹配,并确定要使用哪个视图函数来处理请求。
- 路由器调用视图函数,视图函数可以执行其他操作,并返回响应。
- 中间件获取响应并进行处理。中间件可以修改响应的内容,添加响应头部或进行其他处理。
- 响应发送到客户端。
代码演示:
创建一个简单的中间件,用于向请求添加自定义标题“pidancode.com”。
# middleware.py class CustomHeaderMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # 添加自定义头部 request.META["Custom-Header"] = "pidancode.com" response = self.get_response(request) return response
将中间件添加到 settings.py
文件中的 MIDDLEWARE
列表中。
# settings.py MIDDLEWARE = [ # 其他中间件 'myapp.middleware.CustomHeaderMiddleware', ]
创建一个简单的路由器,用于匹配 URL 和视图函数。
# urls.py from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), ]
创建视图函数,用于响应请求并返回包含中间件添加的标题的响应。
# views.py from django.http import HttpResponse def home(request): # 获取自定义头部 custom_header = request.META.get("Custom-Header", "default") return HttpResponse(f"Hello World! Custom Header: {custom_header}")
启动 Django 服务,并打开浏览器访问应用程序的主页:http://localhost:8000/
你会看到如下响应:
Hello World! Custom Header: pidancode.com
相关文章