Чи можу я використовувати перевірку дозволу програми Auth у шаблоні в Django? (Я хочу відобразити просту форму в кінці шаблону для привілейованих користувачів)
І що важливіше, чи варто це робити взагалі, чи це не «шлях Джанго»?
Чи можу я використовувати перевірку дозволу програми Auth у шаблоні в 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.app_label.foobar
це завжди буде істиною, навіть якщо ви неправильно написали ім'я дозволу.
Перевірено на 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()
Тут усі перелічені дозволи обумовлені групами, до яких він належить.
Якщо вам потрібна більша деталізація при перевірці хімічних завивок (наприклад, на конкретному об’єкті), перевірте це розширення: http://django-authority.readthedocs.org/en/latest/check_templates/
вибачте, що "розкопали" цю публікацію, але у мене проблема, пов'язана з дозволами, див. мій пост: Django: логіка погано застосована в шаблоні з використанням дозволів (perm
оскільки Аріндам, здається, дуже відповідає цій концепції, сподіваюся, він чи хтось інший може мені допомогти
завивки не застосовуються, навіть якщо значення правильне, коли я шукаю в моєму шаблоні {{perms}}, він повертає об’єкт, але не список дозволів, якщо шукаю {{perms.randomization.can_randomize}}, повертає False (або True ), що є хорошим значенням, що мій додаток називається рандомізацією, і я визначаю дозвіл can_randomize у моделях рандомізації (з використанням мета), який є частиною мого додатку для рандомізації
Я перевіряю settings.py, але з усіма швами все в порядку