Django中间件实战
学习编写自定义中间件实现请求日志、IP黑名单等功能。 · 难度:入门 · +15XP
Django中间件
中间件是Django的钩子框架,可以介入请求/响应处理过程。适合做全局过滤、日志、认证等。
中间件结构
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 请求前处理
response = self.get_response(request)
# 响应后处理
return response示例:IP黑名单
class BlockIPMiddleware:
BLOCKED_IPS = ['192.168.1.100']
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
ip = request.META.get('REMOTE_ADDR')
if ip in self.BLOCKED_IPS:
return HttpResponseForbidden('Forbidden')
return self.get_response(request)注册中间件
# settings.py
MIDDLEWARE = [
...
'myapp.middleware.BlockIPMiddleware',
]练习提示
编写一个中间件,记录每个请求的路径和耗时,并输出到控制台。