Могу ли я расширить свой шаблон на основе условия -Django

У меня есть шаблон, который должен использовать отдельные базовые шаблоны в зависимости от того, является ли пользователь системным администратором или обычным администратором. Основное различие между двумя шаблонами заключается в том, что один содержит больше элементов навигационной панели и ссылок на другие части приложения. Я хотел бы, чтобы система распознавала, является ли пользователь системным или обычным администратором, и расширяла правильный базовый шаблон на основе этого теста.

Я знаю, что этого можно добиться, создав второй шаблон и сделав что-то вроде этого в файле views.py:

if sysAdmin == True:
        template = loader.get_template('app/template1.html')
else:
        template = loader.get_template('app/template2.html')

Между двумя группами пользователей существует множество общих взглядов, и я бы не хотел иметь 4 набора шаблонов, которые почти полностью идентичны. Я бы предпочел сделать что-то вроде:

{% if sysAdmin == True %}
    {% extends "app/sysAdminBase.html" %}
{% elif sysAdmin == False %}
    {% extends "app/adminbase.html" %}
{% end if %}

Однако при этом возникает ошибка Invalid block tag on line 3: 'elif'. Did you forget to register or load this tag? Возможно ли это или мне придется создавать дубликаты шаблонов? Спасибо

В тег extends можно передать переменную, которая разрешается в строку, передайте шаблон, который вы хотите расширить в вашем контексте

if sysAdmin == True:
    context['parent_template'] = 'app/sysAdminBase.html'
else:
    context['parent_template'] = 'app/adminbase.html'

Шаблон:

{% extends parent_template %}
Вернуться на верх