Скажи у меня есть шаблон
<html>
<div>Hello {{name}}!</div>
</html>
При тестировании было бы полезно определить значение переменной, не касаясь кода Python, который вызывает этот шаблон. Поэтому я ищу что-то вроде этого
{% set name="World" %}
<html>
<div>Hello {{name}}!</div>
</html>
Существует ли что-то подобное в Джанго?
django
django-templates
Alexis
источник
источник
Создайте тег шаблона:
Приложение должно содержать
templatetags
каталог, на том же уровне , какmodels.py
,views.py
и т.д. Если это не существует, создайте его - не забудьте__init__.py
файл , чтобы обеспечить каталог рассматривается как пакет Python.Создайте файл с именем
define_action.py
внутри каталога templatetags со следующим кодом:Примечание. Сервер разработки не будет автоматически перезагружен. После добавления
templatetags
модуля вам нужно будет перезагрузить сервер, прежде чем вы сможете использовать теги или фильтры в шаблонах.Затем в вашем шаблоне вы можете присвоить значения контексту следующим образом:
источник
add
:{% define counter|add:1 as counter %}
. Аналогично для других операций.Альтернативный способ, который не требует, чтобы вы помещали все в блок «with», - это создание пользовательского тега, который добавляет новую переменную в контекст. Как в:
Это позволит вам написать что-то вроде этого в вашем шаблоне:
Обратите внимание, что большая часть этого была взята отсюда
источник
Есть трюки, подобные описанному Джоном; однако язык шаблонов Django по своему дизайну не поддерживает установку переменной (см. блок «Философия» в документации Django для шаблонов ).
Из-за этого рекомендуемый способ изменить любую переменную - прикоснуться к коду Python.
источник
Лучшее решение для этого - написать кастом
assignment_tag
. Это решение более чистое, чем использованиеwith
тега, поскольку оно обеспечивает очень четкое разделение между логикой и стилем.Начните с создания файла шаблона тега (например.
appname/templatetags/hello_world.py
):Теперь вы можете использовать
get_addressee
тег шаблона в ваших шаблонах:источник
Возможно,
default
шаблон фильтра не был вариант еще в 2009 году ...источник
{% with state=form.state.value|default:other_context_variable %}
вместо того ,other_context_variable
мы также можем использовать любой ,'string_value'
а такжеЭто не очень хорошая идея в целом. Выполните всю логику в python и передайте данные в шаблон для отображения. Шаблон должен быть как можно более простым, чтобы те, кто работает над дизайном, могли сосредоточиться на дизайне, а не беспокоиться о логике.
Например, если вам нужна некоторая производная информация в шаблоне, лучше поместить ее в переменную в коде Python, а затем передать ее в шаблон.
источник
Используйте оператор with .
Я не могу подразумевать код в первом абзаце в этом ответе . Возможно, язык шаблонов устарел в старом формате.
источник
В вашем шаблоне вы можете сделать так:
В ваш шаблон-теги вы можете добавить такой тег:
источник