Django 测试客户端使用已登录的超级用户重定向到登录页面

雷达

问题

我正在尝试将超级用户连接到 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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django测试客户端登录后返回匿名用户

如何在 Django 中将已通过身份验证的用户从登录页面重定向到主页?

Django 测试客户端发布请求无法重定向

Django测试客户端只能登录一次?

Django测试客户端:登录不起作用

Django:通过基于类的视图重定向已登录的用户

如何将用户从 django rest 框架中的中间件重定向到登录页面?

Django-登录并重定向到用户个人资料页面

如何在Django中将登录重定向到不同用户的不同页面?

Django:从“重置密码”页面重定向登录的用户

django:登录后重定向到引用页面

Django-注销重定向到登录页面

Django:测试页面是否已重定向到所需的URL

Django:如果用户已经登录,则从登录页面重定向用户

如果用户在django中注册后首次登录,如何将用户重定向到其他页面?

django PasswordChangeView始终重定向到登录

如果用户已经在Django中登录,如何从登录页面重定向?

django login_required装饰器,即使登录后也始终重定向到登录页面

如何将超级用户重定向到 Django 中的特定页面?

使用Django登录后重定向

如何从Django登录页面重定向到单页面应用程序?

Django登录重定向到密码重置页面,而不是个人资料页面

尝试根据DJango中提供的登录凭据重定向到其他页面

登录失败页面后的 Django 未重定向到下一个

登录后如何重定向到用户请求的URL-Django loginrequiredmixin

Django在登录时根据组重定向用户

用户登录后 Flask-Login 重定向到 React 客户端

登录后重定向到管理员 - Django

在Django中登录后重定向到Next