# utils.py from re import compile from django.conf import settings from django.shortcuts import redirect, reverse from django.utils.deprecation import MiddlewareMixin login_required_urls = [compile(expr) for expr in getattr(settings, 'LOGIN_REQUIRED_URLS', [])] class LoginRequiredMiddleware(MiddlewareMixin): def process_request(self, request): if not request.user.is_authenticated: path = request.path_info.lstrip('/') if any(m.match(path) for m in login_required_urls): return redirect('{}?next={}'.format(reverse(settings.LOGIN_URL), request.path))