当前位置: 首页 > 面试题库 >

Django —有条件的登录重定向

尚棋
2023-03-14
问题内容

我正在使用具有两种类型的用户的Django应用html" target="_blank">程序:管理员和用户。这两个都是我项目中的组,根据个人登录所属的组,我想将它们重定向到单独的页面。现在我在settings.py中有这个

LOGIN_REDIRECT_URL = 'admin_list'

这会将所有登录的用户重定向到“ admin_list”,但是该视图只能由Admins组的成员访问-
否则它将返回403。至于登录视图本身,我仅使用Django提供的视图。我已将此添加到我的主要urls.py文件中以使用以下视图:

url(r'^accounts/', include('django.contrib.auth.urls')),

我该如何做,以便仅将Admins组的成员重定向到该视图,而将其他所有人都重定向到其他视图?


问题答案:

创建一个单独的视图,以根据用户是否在admin组中来重定向用户。

from django.shortcuts import redirect

def login_success(request):
    """
    Redirects users based on whether they are in the admins group
    """
    if request.user.groups.filter(name="admins").exists():
        # user is an admin
        return redirect("admin_list")
    else:
        return redirect("other_view")

将视图添加到您的中urls.py

url(r'login_success/$', views.login_success, name='login_success')

然后将其用于您的LOGIN_REDIRECT_URL设置。

LOGIN_REDIRECT_URL = 'login_success'


 类似资料:
  • 问题内容: 我想设置我的网站,以便如果用户点击该页面并且他们已经登录,它将把他们重定向到主页。如果未登录,它将正常显示。由于登录代码内置在Django中,我该怎么做? 问题答案: 我假设你当前正在使用内置的登录视图, 或你网址中的类似内容。 你可以编写包含默认视图的登录视图。它将检查用户是否已经登录,如果已经登录则重定向,否则使用默认视图。 就像是: 当然可以相应地更改你的网址:

  • 问题内容: 我正在尝试建立一个简单的网站,其登录功能与SO上的登录功能非常相似。用户应该能够以匿名用户的身份浏览网站,并且每个页面上都会有一个登录链接。当单击登录链接时,用户将被带到登录表单。成功登录后,应将用户带回到他首先单击登录链接的页面。我猜想我必须以某种方式将当前页面的url传递给处理登录表单的视图,但是我真的无法使其正常工作。 编辑:我想通了。我通过将当前页面作为GET参数传递来链接到登

  • 这是views.py的内容: 在转到“/”时,我被重定向到“/accounts/login”,它将我带到登录页面。我输入用户名和密码后,在“验证”打印语句printd“登录”到终端。 到目前为止还不错。现在,我不再被重定向到“/”,而是再次被重定向到“/accounts/login”,并再次显示输入用户名和密码的页面。为什么?

  • 我是新的编码,请我需要在这个特定的功能的帮助,我将非常感激,如果有人可以帮助。 我在一个android studio项目上工作,在我的活动(假设活动A)我想放置一个按钮,当点击它将打开假设活动B。 我已经能够设置onclick功能,并打算在按钮单击上打开活动B。

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 我的应用程序看起来像: 如果用户访问 /game下的页面并且没有登录,我想将他们重定向到登录页面。 如何在所有路由器中以优雅的方式进行?