Прерывание цепочки middleware в Django
Если не вызывать
get_response, а сразу
вернуть HttpResponse
(или редирект), view не выполнится.
Так делают, например, запрет
доступа:
from django.http import HttpResponseForbidden
class BlockMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.path.startswith('/secret/'):
return HttpResponseForbidden('denied')
return self.get_response(request)
Сделайте middleware: для пути
/blocked/ возвращайте
403, иначе - обычный ответ.
Сделайте редирект с
/old/ на /new/
целиком в middleware
(без view для /old/).