Django Staff Member Required Decorator делает бесконечный цикл, если доступ запрещен
Я использую декоратор Django staff_member_required для защиты административной области сайта.
Я использую его следующим образом
@staff_member_required(login_url=reverse_lazy('account_login'))
def kommando_home(request):
# business logic
return render(request, 'kommando/home.html', context)
Я использую пользовательский вход, поэтому пользователи не видят страницу входа Django, если они переходят по URL.
Однако, если пользователь, не имеющий права доступа к персоналу, входит в систему, это приводит к следующему:

Я могу добавить параметр redirect в декоратор, но это всегда перенаправляет пользователя на указанный url, даже если у пользователя есть разрешение.
Я пытался настроить декоратор, но не вижу никакого способа проверить, поднимается ли вопрос об отказе в разрешении.
Причина бесконечного цикла заключается в следующем. Требование @staff_member_required не выполняется, поскольку пользователь не является сотрудником, что приводит пользователя к login_url, но пользователь уже вошел в систему, поэтому account_login приводит пользователя к параметру next, который является исходной страницей с staff_member_required и т.д...
Вместо этого можно попробовать проверить наличие разрешения в самом представлении, а затем перенаправить оттуда:
Посмотрите ответ Serafeim на Как проверить разрешения пользователя в views.py?
Использовать has_perm:
Итак, изнутри вашего get_context_data вы можете сделать что-то вроде этого:
if self.request.user.has_perm('applications.admin_access'):
# redirect to one page
else:
# redirect to the other page