【问题标题】:How to redirect superuser to specific page in Django?如何将超级用户重定向到 Django 中的特定页面?
【发布时间】:2021-10-04 21:15:54
【问题描述】:

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

这是我在 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'),
]

【问题讨论】:

    标签: python django redirect django-views django-templates


    【解决方案1】:

    检查此代码 ->

    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 并且它返回 True 它是,如果不是则返回 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多