Могу ли я расширить свой шаблон на основе условия -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 %}