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):
    ...
Вернуться на верх