在登录到我自己在 Django 中创建的仪表板之前,如何检查员工是否为真?

how to check is staff is True before login into dashboard which i have created by myself in Django?

我创建了一个仪表板,超级用户在我的仪表板中创建了用户名、密码和所有这些东西,但在我的仪表板中,我想在登录仪表板之前先检查用户名是否为员工。怎么做?谁能帮帮我

from django.shortcuts import redirect, render
from django.contrib import auth, messages
from orderkitchen.models import kitchenData 
from django.contrib.auth.models import User

def login_dashboard(request):

    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = auth.authenticate(username = username, password = password)
        if user is not None:
            auth.login(request,user)
            messages.success(request, 'You are Logged in')
            return redirect('dashboard')
            
        else:
            messages.error(request,'Your Username or Password is incorrect')
            return redirect('login_dashboard')
        return
    else:
        return render(request,'accounts/dashboard_login.html')

def dashboard(request):
    return render(request, 'accounts/dashboard.html')

只有员工状态为True才能登录

当您对用户进行身份验证时,您会获得用户对象,您可以通过该对象访问 AUTH_MODEL 中的 is_staff 字段。

user = auth.authenticate(username = username, password = password)
if user is not None:
    if user.is_staff:
        auth.login(request,user)
        messages.success(request, 'You are Logged in')
        return redirect('dashboard')
    else:
        # user is not staff

您可以检查 authenticate 之后的 status 是否 returns 而不是 None as

from django.shortcuts import redirect, render
from django.contrib import auth, messages
from orderkitchen.models import kitchenData 
from django.contrib.auth.models import User

def login_dashboard(request):

    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = auth.authenticate(username = username, password = password)
        if user is not None and user.is_staff == True:
            auth.login(request,user)
            messages.success(request, 'You are Logged in')
            return redirect('dashboard')
        
        else:
            messages.error(request,'Your Username or Password is incorrect')
            return redirect('login_dashboard')
        return
    else:
        return render(request,'accounts/dashboard_login.html')

def dashboard(request):
    return render(request, 'accounts/dashboard.html')