in Django docs вы найдете несколько способов сделать то, что вам нужно.
Самый простой способ - использовать декораторы. Предположим, простое представление def:
from from django.contrib.auth.decorators import staff_member_required
@staff_member_required
def view_page(request, *args, **kargs):
return render(request, "view.html", {})
Теперь и администратор (который имеет все разрешения), и персонал получили доступ к просмотру. html. Обычный или анонимный пользователь получит «страницу отказа в доступе»
Вы можете получить ту же цель в представлениях классов с помощью PermissionRequiredMixin:
from django.contrib.auth.mixins import PermissionRequiredMixin
class MyView(PermissionRequiredMixin, View):
permission_required = 'is_staff'
или с какой-либо конкретной привилегией:
permission_required = 'AppLabel.can_dosomething'
Обратите внимание, что в этом случае пользователю нужны Perm 'can_dosomething' для AppLabel.
Но будьте осторожны, флаг is_staff в модели User Django дает несколько привилегий, как при просмотре сайта администратора и другие. Если вам нужно просто дать несколько разрешений, но не много, вам, вероятно, будет удобнее создать группу с этими разрешениями и добавить туда своих «штатных пользователей».
В ссылка выше