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

How to redirect superuser to specific page in Django?

我想在登录后将超级用户发送到仪表板(主页)。但是普通用户会重定向到商店页面,我该怎么做呢?

这是我在 views.py 文件中使用的逻辑,我需要做哪些更改?

views.py

@unauthenticated_user
def loginPage(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        
        user = authenticate(request, username = username, password = password)

        if user is not None:
            login(request, user)
            return redirect('store')
        else:
            messages.info(request, 'Username OR Password is incorrect')

    context = {}
    return render(request, 'store/login.html', context)

urls.py

urlpatterns = [
    
    path('register/', views.registerPage, name="register"),
    path('login/', views.loginPage, name="login"),
    path('logout/', views.logoutUser, name="logout"),
    
    path('dashboard/', views.home, name='dashboard'),
    path('products/', views.products, name='products'),
    path('customer/<str:pk>/', views.customer, name='customer'),
    path('profile/', views.profilePage, name="profile"),

    path('cart/', views.cart, name='cart'),
    path('checkout/', views.checkout, name='checkout'),
    path('', views.store, name='store'),
    path('update_item/', views.updateItem, name='update_item'),
    path('process_order/', views.processOrder, name='process_order'),
]

检查此代码 ->

if user is not None:
    login(request, user)
    if user.is_superuser:
        return redirect('dashboard')
    else:
        return redirect('store')
else:
    messages.info(request, 'Username OR Password is incorrect')

您正在检查用户是否是超级用户 -> user.is_superuser 并且 returns 是,如果不是,则为 False。也许对你有帮助。

对于检查此代码的良好做法,我认为这样做更好 ->

if user is None:
   message.info(request, 'Username OR password is incorrect')

login(request, user)
if user.is_superuser:
    
    return (redirect('dashboard')
return redirect('store')