Middleware là callable bọc quanh pipeline request → view → response, chạy trước/sau view cho mọi request.
Hợp với các cross-cutting concern: auth, session, CSRF, logging, GZip, security header, gắn tenant context vào request.
python
class RequestIdMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
request.id = uuid.uuid4().hex
response = self.get_response(request)
response['X-Request-ID'] = request.id
return responseRegister vào MIDDLEWARE setting; thứ tự khai báo rất quan trọng — xem [[#9224]].
- Đừng nhồi business logic vào middleware vì nó chạy cho mọi request kể cả static/admin, rất dễ thành bottleneck.
- Việc nào chỉ liên quan một view thì đặt ở view hoặc decorator.