Тег CopyBlock для Django

Как мне написать тег copyblock для шаблонов Django?

Для такой функции:

<title> {% block title %} some title... {% endblock %} </title>
<h1>{% copyblock title %}</h1>

person Community    schedule 29.07.2009    source источник


Ответы (2)


Взгляните на решения, упомянутые в этом вопросе:

person ars    schedule 29.07.2009

Парсер шаблонов Django не отображает блоки по имени. Вместо этого они организованы в древовидную структуру в Template nodelist Django с рендерингом pushing и popping в стеке узлов шаблона. У вас будет практически невозможно получить к ним доступ так, как показывает ваш пример.

Ссылка SO, которая содержит ссылки ars, дает предложения по лучшим решениям. Из этих решений определение переменной в контексте (например: {{ title }} в духе вашего примера), которую можно использовать повторно, является, вероятно, наиболее простым и поддерживаемым подходом. Если фрагмент, который вы хотите скопировать, выходит за рамки простой переменной, пользовательский тег шаблона, вероятно, является наиболее привлекательным вариантом.

person Jarret Hardie    schedule 29.07.2009
comment
+1: Сосредоточьтесь на {{ title }} и предоставлении дополнительного контекста. Пользовательские теги шаблонов редко окупаются. - person S.Lott; 29.07.2009