Как я могу установить, что когда пользователь является администратором, только тогда он может просматривать определенную html-страницу в Django
У меня есть html страница с названием admin_dashboard.html. Итак, в navbar есть кнопка Admin Dashboard только админ может получить эту кнопку. Если администратор нажмет на эту кнопку, он перейдет на страницу admin_dashboard.html, но сотрудники также могут перейти на эту страницу, используя урлы, которые http://127.0.0.1:8000/admin_dashboard. Поэтому я хочу, чтобы при ручном вводе этого url и попытке перейти на страницу admin_dashboard.html выдавалась ошибка.
вот мой код для этой кнопки
{%if user.is_superuser%}
<li><a class="dropdown-item" href="admin_dashboard">Admin Dashboard</i></a></li>
{%endif%}
urls.py:
path("admin_dashboard", views.admin_dashboard, name='admin_dashboard')
views.py
@login_required(login_url='/login')
def admin_dashboard(request):
return render(request,'admin_dashboard.html')
Вы можете сделать это следующим образом :
@login_required(login_url='/login')
def admin_dashboard(request):
if request.user.is_superuser :
return render(request,'admin_dashboard.html')
else:
return render(request,'html_view_with_error',{"error" : "PERMISSION DENIED"})
Вы можете проверить, является ли он superuser или нет в views.py и отобразить template соответственно как
@login_required(login_url='/login')
def admin_dashboard(request):
if request.user.is_superuser == True:
return render(request, 'admin_dashboard.html')
else:
# render to any html if it is not `superuser`
return render(request, 'non_superuser_dashboard.html')