django-中间件
Posted hylone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-中间件相关的知识,希望对你有一定的参考价值。
中间件:可以在请求前、后、响应前、后、视图产生异常的 织入业务逻辑,
是一个可插拔式的设计。中间件采用的就是 AOP的设计思想
面向切面编程 AOP : 是对面向对象的一个补充和扩展,不是用来替代便面向对象的
面向对象编程 OOP
Django 中 自定义 一个 中间件
1、在项目中, 新建一个 middlewares.py
2、在 middlewares.py
中, 定义一个类,继承 MiddlewareMixin
3、在 类中 定义 下列方法
- process_request(request)
- 代表在视图方法执行前 执行的代码
- process_view(request, view, args, kwargs)
- 代表在视图方法开始执行前 执行的 代码
- process_exception(request, exception)
- 代表视图在执行过程中,如果产生异常,执行的代码
- process_response(request, response)
- 代表在视图执行完后执行的代码
- process_template_response(request, response)
- 响应的结果必须是通过 render返回的
4、使用中间件
在 settings.py
中, 配置中间件
MIDDLEWARE = [
....
自定义中间件
....]
通过自定义中间件,实现一个 获取 业务运行时间 的中间件
import time
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import render
class ViewRunTimeMiddleware(MiddlewareMixin):
def process_view(self, request, view, args, kwargs):
print(view, args, kwargs)
self.start = time.time()
def process_response(self, request, response):
self.end = time.time()
print("该业务运行了", self.end - self.start , "秒")
return response
自定义中间件、实现 登录权限
的认证
自定义一个装饰器, 实现 登录权限
的认证
以上是关于django-中间件的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段