Пара способов go об этом, которые сразу выделяются ..
Вы можете написать свой собственный декоратор:
def custom_login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None):
"""
Decorator for views that checks that the user is logged in, redirecting
to the log-in page if necessary.
"""
actual_decorator = user_passes_test(
lambda u: u.is_authenticated,
login_url=login_url,
redirect_field_name=redirect_field_name
)
if request.user.username: #probably better ways to write this
logger.info(request.user.username)
elif function:
return actual_decorator(function)
return actual_decorator
Вы можете использовать CBV
s и Mixin
s (один из моих любимых способов написания кода многократного использования) и переопределить метод LoginRequiredMixin * dispatch()
(я считаю, что это лучший способ переопределения):
class LoginRequiredMixin(LoginRequiredMixin):
def dispatch(self, request, *args, **kwargs):
if request.user.is_authenticated:
logger.info(request.user.username)
else:
pass
return super().dispatch(request, *args, **kwargs)
Вам нужно будет проверить, правильно ли написан этот код. Я написал это быстро ...
Кроме того, третий способ - написать настраиваемое промежуточное ПО , что, вероятно, является лучшим вариантом из всех 3.