gpt4 book ai didi

Django,将员工从登录重定向到管理站点

转载 作者:行者123 更新时间:2023-12-01 23:48:56 24 4
gpt4 key购买 nike

所以我的网站基本上有两种登录方式,其中一种是针对普通用户的,他们会看到常规屏幕,要求他们输入用户名和密码,另一种方式是针对员工的。

员工登录应该在登录后将他们重定向到管理站点,但由于某种原因重定向没有发生,它保留在同一登录页面上。

我在登录 View 上使用此条件。

if user is not None and user.is_active and user.is_staff:
auth.login(request,user)
return HttpResponseRedirect("/admin/")

管理站点在我的 URL 配置和所有内容中启动并运行,但我不知道这是否是重定向到已在 session 中的管理站点的正确方法。

谢谢,如有任何帮助,我们将不胜感激。

最佳答案

当用户登录时,login() 将自动重定向用户,跳过代码中的以下行:

return HttpResponseRedirect("/admin/")

两种可能性:

  1. 如果您的 REQUEST 字段中存在 REDIRECT_FIELD_NAME(又名“下一个”),则用户会立即重定向到该字段。

  2. 如果未找到 REDIRECT_FIELD_NAME,则用户将被重定向到您可能已在 settings.py 中定义的 LOGIN_REDIRECT_URL,如果没有找到,则会重定向到 LOGIN_REDIRECT_URL 的默认值。

因此,您的代码似乎没有设置 REDIRECT_FIELD_NAME,因此自然所有用户最终都会被重定向到 LOGIN_REDIRECT_URL 的路径,无论该路径是什么。

要解决此问题,请在知道用户是员工时设置 request.REQUEST['next'] = '/admin/'。然后重定向将自动发生。

关于Django,将员工从登录重定向到管理站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com