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