Можно ли использовать проверку разрешений приложения Auth внутри шаблона в Django? (Я хочу показать простую форму в конце шаблона для привилегированных пользователей)
И что еще более важно, должен ли я вообще это сделать или это не "способ Django"?
Можно ли использовать проверку разрешений приложения Auth внутри шаблона в Django? (Я хочу показать простую форму в конце шаблона для привилегированных пользователей)
И что еще более важно, должен ли я вообще это сделать или это не "способ Django"?
Если вы хотите проверить разрешения в шаблонах, следующий код будет достаточным:
{% if perms.app_label.can_do_something %}
<form here>
{% endif %}
Где модель относится к модели, которую пользователю нужны разрешения для просмотра формы для.
Подробнее см. https://docs.djangoproject.com/en/stable/topics/auth/default/#permissions.
Существующие в настоящее время входные разрешения пользователя хранятся в переменной шаблона
{{ perms }}
(Для этого необходимо включить следующий процессор контекста: django.contrib.auth.context_processors.auth
)
Если вам нужна более детальность при проверке perms (например, для конкретного объекта), проверьте это расширение: http://django-authority.readthedocs.org/en/latest/check_templates/
Проверено на Django 2.0+
Если вы хотите увидеть все разрешения, которые есть у вошедшего в систему пользователя, в вашем шаблоне (.html) выведите:
{{ perms.app_name }}
Или же
{{ perms }}
Чтобы проверить, есть ли у пользователя разрешение, используйте:
{% if perms.app_name.change_model_name_lower_cased %}
Например:
{% if perms.Utilization.change_invoice %}
Здесь: Использование - это имя моего приложения. Счет-фактура - это название модели.
Обратите внимание, что в целом будет 4 вида разрешений:
Также, если вы хотите увидеть все разрешения, которые есть у пользователя из-за групп, к которым он принадлежит, запустите оболочку Django...
user = User.objects.get(username='somename')
user.get_group_permissions()
Здесь все перечисленные разрешения принадлежат тем группам, к которым он принадлежит.