如何根据用户是否是Django中的管理员重定向登录URL?
我对Django还是新手。我有一个管理员用户和一个不是管理员的普通用户。当管理员登录时,他应该被重定向到“/admin_section”&当普通用户登录时,他应该被重定向到“/”首页。除此之外,管理员还可以导航到“/”首页,并像普通用户一样查看该页面 我一直在尝试搜索这个问题的答案,我发现的唯一一件事是我可以在视图中使用request.user.is_superuser,并询问该用户是否是超级用户/管理员。但问题是,管理员将永远无法导航到首页。我还将login_redirect_url设置为“login_redirect_url='/'”,这意味着每次用户登录时,他们都会被重定向到frontpage,但情况不应该是这样 以下是我的代码(来自views.py文件): forms.py:如何根据用户是否是Django中的管理员重定向登录URL?,django,django-views,django-urls,django-settings,Django,Django Views,Django Urls,Django Settings,我对Django还是新手。我有一个管理员用户和一个不是管理员的普通用户。当管理员登录时,他应该被重定向到“/admin_section”&当普通用户登录时,他应该被重定向到“/”首页。除此之外,管理员还可以导航到“/”首页,并像普通用户一样查看该页面 我一直在尝试搜索这个问题的答案,我发现的唯一一件事是我可以在视图中使用request.user.is_superuser,并询问该用户是否是超级用户/管理员。但问题是,管理员将永远无法导航到首页。我还将login_redirect_url设置为“l
from django.contrib.auth.forms import AuthenticationForm
from django import forms
from django.contrib.auth import logout
from django.contrib.auth.mixins import LoginRequiredMixin, AccessMixin
# a class which act as a view - it displays the login-form
class LoginForm(AuthenticationForm, AccessMixin):
username=forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))
password=forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}))
URL.py:
path('login/', views_auth.LoginView.as_view(form_class=LoginForm, redirect_authenticated_user=True), name='login'), # login-page
get\u success\u url
方法
from django.contrib.auth import views as views_auth
class LoginView(views_auth.LoginView):
form_class=LoginForm
redirect_authenticated_user=True
def get_success_url(self):
# write your logic here
if self.request.user.is_superuser:
return '/admin_section'
return '/'
url.py
get\u success\u url
方法
from django.contrib.auth import views as views_auth
class LoginView(views_auth.LoginView):
form_class=LoginForm
redirect_authenticated_user=True
def get_success_url(self):
# write your logic here
if self.request.user.is_superuser:
return '/admin_section'
return '/'
url.py
我已经用其他文件更新了我的问题。我已经为LoginView创建了一个类-我应该创建另一个类吗?@user3740970您可以使用我建议的LoginView类提供的两个参数。请参阅更新答案中的LoginView类。但在与超级用户登录时,它不会重定向到/admin_部分?这应该是可接受的答案-我将使用超级方法添加它是最明智的-查看源:@user3740970-您不需要设置中的LOGIN_URL,并验证项目URL.py是否位于放置URL的位置loginview-它应该是列表中的第一个,我已经用其他文件更新了我的问题。我已经为LoginView创建了一个类-我应该创建另一个类吗?@user3740970您可以使用我建议的LoginView类提供的两个参数。请参阅更新答案中的LoginView类。但在与超级用户登录时,它不会重定向到/admin_部分?这应该是可接受的答案-我将使用超级方法添加它是最明智的-查看源:@user3740970-您不需要设置中的LOGIN_URL,并验证项目URL.py是否位于放置URL的位置loginview-它应该是列表中的第一个
urlpatterns = [
path('login/', LoginView.as_view(),name='login'),
]
LOGIN_URL = 'login'