Должен ли я использовать проверки разрешений Django в шаблоне и представлении? - PullRequest
0 голосов
/ 18 января 2012

Рекомендуется или избыточно устанавливать разрешения для шаблона И представления?

Учтите, что любые манипуляции с данными в БД выполняются через POST

если следующего достаточно для разрешений?

{% if perms.system.view_employee %}
     <!-- content here -->
{% else %}
     <h1>Sorry you do not have permission to access this page<h2>
{% endif %}

или мне также следует выполнить проверку на стороне сервера (это избыточно или необходимо)?

def my_view(request):
    if not request.user.has_perm('polls.can_vote'):
        return HttpResponse("You can't access this page")
    else:
        # do stuff
        ...

1 Ответ

6 голосов
/ 18 января 2012
  1. Проверки в шаблоне выполняются на стороне сервера.
  2. Проверка разрешений в шаблоне и в представлении не имеет одинаковой цели:

    • Проверка разрешений в представлении запрещает доступ ко всей странице. Вы делаете это, когда эта страница и включенная в нее функция предназначены для APO.Вы обрабатываете доступ к ресурсам.
    • Проверка разрешений в шаблоне запрещает отображение частей шаблона .Вы делаете это, когда хотите, чтобы люди могли получить доступ к странице, но есть некоторые вещи, которые вы не хотите, чтобы они видели на странице.Вы обрабатываете отображение.

В вашем конкретном примере вы должны установить проверки разрешений для представления, чтобы запретить кому-либо делать эту манипуляцию.Обычно, если доступ к представлениям осуществляется с помощью POST, маловероятно, что вам понадобится проверка разрешений шаблона, поскольку запросы POST являются действиями по сути.

Обычно вам требуются проверки разрешений шаблона, если вы:

  • иметь некоторые части страницы, которые человек не может видеть (например, конфиденциальные данные)
  • хочет улучшить удобство использования для отображения элементов (меню, форм и т. д.), которые имеют отношение только к его уровню разрешений.На самом деле в меню нет ссылки на администратора, если у человека нет прав доступа к администратору.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...