Django {% include %} 标签显示硬编码字符串但不是变量

Django {% include %} tag displays hardcorded string but not variable

我希望一个模板使用 Django {% include %} 标记从另一个模板继承变量。但这并没有发生。

section.html,要继承的模板:

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

index.html,应该从 section.html:

继承 word_in_template
{% 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})

Chrome 中 section.html 的输出:

My cows are home.

--> frisky things. <--

Chrome 中 index.html 的输出:

My cows are home.

--> <--

我正在关注 this solution,但它对我不起作用。 "frisky things" 在我加载 section.html 时显示,但在 index.html 上不显示。但是,硬编码字符串 My cows are home 出现在 index.html.

我想我也在关注 documentation。但我是新手,所以也许我没有正确阅读内容或其他内容。我做错了什么?

当您在 index.html 模板中包含 section.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 %}