import json from functools import lru_cache, partial from django.http import HttpRequest def _lazy_json(request): return json.loads(request.body) def JSONRequestMiddleware(get_response): def middleware(request: HttpRequest): request.json = lru_cache(partial(_lazy_json, request)) response = get_response(request) return response return middleware