Тестовый клиент Django перенаправляет на страницу входа в систему с вошедшим суперпользователем
Я пытаюсь подключить суперпользователя к тестовому клиенту Django, а затем получить доступ к странице в интерфейсе администрирования Django с помощью метода GET. Однако я получаю перенаправление на страницу входа в систему, даже если суперпользователь правильно вошел в систему.
Вот мой код:
def test(self) -> None:
client = Client()
user = User.objects.create(username='user', is_superuser=True)
client.force_login(user)
response = client.get(f'/admin/management/establishment/', follow=True)
print("Redirect chain\t", response.redirect_chain)
print("Request user\t", response.wsgi_request.user)
print("Is superuser\t", response.wsgi_request.user.is_superuser)
Вот вывод:
Redirect chain [('/admin/login/?next=/admin/management/establishment/', 302)]
Request user user
Is superuser True
Знаете ли вы, почему у меня такое перенаправление и как я могу его избежать?
Источник проблемы
Похоже, что установка пользователя в качестве суперпользователя с помощью is_superuser=True не позволяет ему получить доступ к интерфейсу администратора Django.
Только сотрудники могут войти в систему, поэтому атрибут is_staff=True должен быть добавлен к созданию пользователя.
Удивительно, что суперпользователи не считаются сотрудниками по умолчанию.
Решение
Создание пользователя со следующей строкой не перенаправляет на страницу входа в систему:
user = User.objects.create(username='user', is_superuser=True, is_staff=True)