Вот немного более короткое промежуточное ПО.
from django.contrib.auth.decorators import login_required
class LoginRequiredMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
if not getattr(view_func, 'login_required', True):
return None
return login_required(view_func)(request, *view_args, **view_kwargs)
Вам нужно установить «login_required» в False для каждого вида, который вам не нужно регистрировать, чтобы увидеть:
Вид функции:
def someview(request, *args, **kwargs):
# body of view
someview.login_required = False
Представления на основе классов:
class SomeView(View):
login_required = False
# body of view
#or
class SomeView(View):
# body of view
someview = SomeView.as_view()
someview.login_required = False
Это означает, что вам придется что-то делать с видами входа в систему, но в любом случае я всегда создаю свой собственный auth-backend.