Django: не удается передать переменную в включенный шаблон?
У меня проблема, когда я хочу использовать шаблон, в том числе в Django.
вот реальный пример: Я получил 3 файла:
- дома.HTML-код (получит переменную контекста, переданную из вид)
- базы.HTML-код (файл шаблона скелет)
- и .HTML-код (в комплекте с базой.формат HTML.)
Если я помещу код ниже непосредственно в базы.HTML-код без включения .HTML-код на {{title}} переменная, переданная из дома, правильно называется. Но если я включу .HTML-код на базы.HTML-код на {{title}} значение переменной не может быть вызвано.
<title>{% block title %}{% endblock %} | {{ SITE_INFO_TITLE }}</title>
есть ли решение этой проблемы? Спасибо.
3 ответов
насколько я знаю блоки и переменные различны в Django. Если вы хотите передать заголовок как переменную контекста, вы должны установить его с помощью объявления в base.HTML, например :
{% include "header.html"%}
что, в свою очередь, содержит :
{% block title %} {{title}} {%endblock%}
вы также можете установить его в доме, как этот.
{%заголовок блока %} Домашняя страница {%endblock%}
Но я также пытаюсь установить в контексте шаблона.
Без заголовка.
def test_view(ctx):
xa = { "title":"Sommaire"}
return render_to_response("test.html",xa)
Я думаю, вы также можете посмотреть with
шаблон тег я думаю, что можно установить контекстную переменную с помощью этого тега.
не могли бы вы просто передать переменную в тег {% include %}
тег? Это задокументировано здесь:https://docs.djangoproject.com/en/1.5/ref/templates/builtins/#include
{% include "name_snippet.html" with person="Jane" greeting="Hello" %}
можно использовать Включение Теги для отображения дополнительного шаблона из шаблона Django. Вы можете дополнительно передать контекст шаблона "дочерний" из шаблона "Родительский".
Это немного связано с вашим случаем использования, но это решает вашу проблему. Я обычно использую его, когда я зацикливаю список, чтобы отобразить каждый элемент с помощью пользовательского шаблона. Затем я могу повторно использовать этот шаблон в другом месте без дублирования разметки, если мне нужно отобразить другой элемент того же самого тип.