Тег Django {% include %} отображает жестко заданную строку, но не переменную

Я хочу, чтобы один шаблон наследовал переменную из другого шаблона, используя Django {% include %} тег. Но этого не происходит.

section.html, шаблон для наследования от:

{% block section1 %}
<p>My cows are home.</p>
--> {{ word_in_template }} <--
{% endblock %}

index.html, который должен наследовать word_in_template от section.html:

{% include "section.html" with word_in_template=word_in_template %}

Я также пытался {% include "section.html" with word_in_template=word %},

Мой взгляд:

def myblog(request):
    return render_to_response('index.html')

def section(request):
    word = "frisky things."
    return render_to_response('section.html', {'word_in_template':word})

Выход для section.html в Chrome:

My cows are home.

--> frisky things. <--

Выход для index.html в Chrome:

My cows are home.

--> <--

Я следую этому решению, но оно не работает для меня. "frisky things" показывает, загружаю ли я section.html но это не показывает на index.html, Тем не менее, жестко закодированная строка My cows are home появляется на index.html,

Я думаю, что я тоже следую документации. Но я новичок, так что, возможно, я не читаю вещи правильно или что-то. Что я делаю неправильно?

1 ответ

Решение

Когда вы включаете section.html в вашем index.html шаблон, он не включает автоматически контекст из section Посмотреть. Вы должны включить контекст в myblog Посмотреть.

def myblog(request):
    word = "my_word"
    return render(request, 'index.html', {'word_in_template':word}))

В шаблоне правильный способ сделать это word_in_template=word_in_template, поскольку word_in_template является ключом в контекстном словаре.

{% include "section.html" with word_in_template=word_in_template %}
Другие вопросы по тегам