Python: Как изменить заголовок страницы в Django на основе переменной?
Я работаю с приложением Django, которое использует один и тот же шаблон для разных "страниц" - в основном, страница может быть либо "Создать запись", либо "Редактировать запись". Страница меняется в зависимости от следующих параметров:
{% if props.data.id %}
Edit
{% else %}
Create
{% endif %}
Логика такова: если для этой записи существует id, то страница будет отображаться как страница редактирования. В противном случае страница будет отображаться как страница создания.
Я хочу, чтобы заголовок страницы менялся в зависимости от одних и тех же параметров. Таким образом, две версии страницы должны быть:
Create Entry
Edit Entry
Вот код, который я сейчас пробую:
{% if props.data.id %}
{% with action='Edit' %}
{% endwith %}
{% else %}
{% with action='Create' %}
{% endwith %}
{% endif %}
{% block title %} {{ action }} Entry {% endblock %}
Я пока не смог заставить это работать. Нахожусь ли я на правильном пути? Я использовал 'with', так как это, кажется, рекомендуемый способ установки переменных в Django, но мне интересно, есть ли лучший способ сделать это.
В документации к with упоминается:
Наполняемая переменная доступна только между тегами {% with %} и {% endwith %}.
На самом деле вам не нужно устанавливать переменную для этого, вы можете напрямую сделать:
{% block title %} {% if props.data.id %} Edit {% else %} Create {% endif %} {% endblock %}
Для простой замены заголовка это не требуется, но вы также можете передать переменную как часть контекста шаблона, например:
action = 'Edit' if props.data.id else 'Create'
return render(request, 'polls/index.html', {'action': action })
и тогда вы сможете использовать его как {{ action }} во всем шаблоне.
Для более сложной логики или поведения, вы можете ознакомиться с предложениями в этом вопросе - Django {% with %} tags within {% if %} {% else %} тегов?