Как проверить, является ли персонал истинным перед входом в приборную панель, которую я создал сам в 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, то только тогда можно войти
При аутентификации пользователя вы получаете объект User, через который вы можете получить доступ к полю is_staff из AUTH_MODEL.
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
Вы можете проверить status после authenticate, если он возвращает не None как
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')
Вы можете сделать это в файле views.py:
@login_required
def dashboard(request):
if request.user.is_staff == True:
return render(request, 'dashboard.html')
else:
return redirect('/')
Этот метод сначала использует обертку аутентификации Django, чтобы убедиться, что пользователь вошел в систему.
Вы также можете добавить следующее в файл dashboard.html:
{% if request.user.is_authenticated %}
{% if request.user.is_staff %}
<div>
<p>Welcome to your Dashboard <b>{{request.user.email}}</b></p>
</div>
{% else %}
<!-- Show HTML content to other users here -->
{% endif %}
{% endif %}
