Write timing and activity logging middleware as functions or classes applied globally.
Writing Custom Middleware
def timing_middleware(get_response):
def middleware(request):
import time
start = time.time()
response = get_response(request)
elapsed = round(time.time() - start, 3)
response["X-Response-Time"] = str(elapsed) + "s"
return response
return middleware
class UserActivityMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
if request.user.is_authenticated:
UserActivity.objects.update_or_create(
user=request.user,
defaults={"last_active": timezone.now()}
)
return response
# settings.py
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"myapp.middleware.timing_middleware",
"myapp.middleware.UserActivityMiddleware",
]