Django
中间件:概述
中间件:自定义
Celery(一)
内置应用的作用
内置中间件的作用
Celery(二)
模型 class Meta
模型 管理器(Manager)
related_name 介绍
prefetch_related 介绍
本文档使用 MrDoc 发布
-
+
首页
中间件:自定义
### 基础写法 中间件可以理解为拦截器,拦截输入或输出进行处理,因此最直观的写法就是装饰器的写法,当然也可以写成类。 中间件的函数式写法: ``` def simple_middleware(get_response): # One-time configuration and initialization. def middleware(request): # Code to be executed for each request before # the view (and later middleware) are called. response = get_response(request) # Code to be executed for each request/response after # the view is called. 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): # Code to be executed for each request before # the view (and later middleware) are called. response = self.get_response(request) # Code to be executed for each request/response after # the view is called. return response ``` Django 提供的 `get_response` 可能是实际视图(如果这是最后列出的中间件),也可能是链中的下一个中间件。 ### 更多写法 除前面说的基础请求/响应中间件模式外,你可以给基于类的中间件添加三种其他特殊方法: - process_view(request, view_func, view_args, view_kwargs):在调用视图前被调用; - process_exception(request, exception):当视图引发异常时被调用; - process_template_response(request, response) > 老的版本中还有`process_request`和`process_response`这两个方法,但是新版本已经废弃了,可以参考[这篇文章](https://stackoverflow.com/questions/52913333/why-middleware-mixin-declared-in-django-utils-deprecation-py "这篇文章") ### 参考 > [Django 文档:中间件](https://docs.djangoproject.com/zh-hans/4.0/topics/http/middleware/#middleware "Django 文档:中间件")
gaojian
2022年1月25日 10:30
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码