Управление разрешениями Django с использованием собственного sql - PullRequest
0 голосов
/ 12 февраля 2020

Моя Django программа использует собственный mysql для выполнения запроса. Там нет ORM. Внутренняя система управления имеет отдел продаж и управленческий персонал. Они видят разные интерфейсы. Администратор может видеть все интерфейсы, а сотрудники отдела продаж видят только некоторые интерфейсы. Что мне делать? Я новичок ie до python и не сталкивался с такими проблемами. Мне очень нужна помощь, спасибо!

1 Ответ

0 голосов
/ 12 февраля 2020

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 дает несколько привилегий, как при просмотре сайта администратора и другие. Если вам нужно просто дать несколько разрешений, но не много, вам, вероятно, будет удобнее создать группу с этими разрешениями и добавить туда своих «штатных пользователей».

В ссылка выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...