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. Вы можете дополнительно передать контекст шаблона "дочерний" из шаблона "Родительский".

Это немного связано с вашим случаем использования, но это решает вашу проблему. Я обычно использую его, когда я зацикливаю список, чтобы отобразить каждый элемент с помощью пользовательского шаблона. Затем я могу повторно использовать этот шаблон в другом месте без дублирования разметки, если мне нужно отобразить другой элемент того же самого тип.