Django данные в html templates в зависимоти от роли пользователя
Подскажите, как в проекте, которые растет и в котором добавляются новые роли организовать вывод данных для html шаблонов.
На первом этапе с 3 очевидными ролями, все было организовано через if
-statements в самих шаблонах. Пример:
{% if user_role == "superuser"%}
<form action="" method="post">
{% csrf_token %}
.....
{% endif %}
Либо через if-elif-else
.
Количество элементов на странице и количество ролей растет. Это значит, что данное распределение данных, которые должны быть показаны, становится не удобным в обслуживании и расширении.
Существует ли паттерн проектирования для django, который описывает и решает данную проблему? Первое, что приходит в голову - это создать нексколько html шаблонов и подтягивать их в зависимости от роли.
Использовать декораторы для функций вью, если модер или админ то:
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def my_view(request):
...
Для обычных зарегистрированных пользователей:
@login_required
def my_view(request):
...