Django 测试客户端使用已登录的超级用户重定向到登录页面
The Django test client redirects to the login page with a logged-in superuser
问题
我正在尝试将超级用户连接到 Django 测试客户端,然后使用 GET 方法访问 Django 管理界面中的页面。但是,即使超级用户已正确登录,我也会重定向到登录页面。
代码
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
附加信息
- 具有密码和电子邮件的用户结果相同
- 在新的 Django 项目上测试
问题
你知道为什么我有这个重定向以及我如何避免它吗?
问题来源
似乎使用 is_superuser=True
将用户设置为超级用户不允许他们访问 Django 管理界面。
只有员工才能登录,所以必须在用户创建中添加is_staff=True
属性。
令人惊讶的是,默认情况下超级用户不被视为员工。
解决方案
使用以下行创建用户不会重定向到登录页面:
user = User.objects.create(username='user', is_superuser=True, is_staff=True)
问题
我正在尝试将超级用户连接到 Django 测试客户端,然后使用 GET 方法访问 Django 管理界面中的页面。但是,即使超级用户已正确登录,我也会重定向到登录页面。
代码
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
附加信息
- 具有密码和电子邮件的用户结果相同
- 在新的 Django 项目上测试
问题
你知道为什么我有这个重定向以及我如何避免它吗?
问题来源
似乎使用 is_superuser=True
将用户设置为超级用户不允许他们访问 Django 管理界面。
只有员工才能登录,所以必须在用户创建中添加is_staff=True
属性。
令人惊讶的是,默认情况下超级用户不被视为员工。
解决方案
使用以下行创建用户不会重定向到登录页面:
user = User.objects.create(username='user', is_superuser=True, is_staff=True)