我遇到了一个问题,我想在Django中使用模板。
这是一个真实的例子: 我有3个文件:
如果我将以下代码直接放在 base.html 中而不包含 header.html ,则 {{title}} 变量从家是正确的。但如果我在 base.html 中加入 header.html ,则无法调用 {{title}} 变量的值。
<title>{% block title %}{% endblock %} | {{ SITE_INFO_TITLE }}</title>
这个问题有解决办法吗?感谢。
答案 0 :(得分:10)
你能在{% include %}
标签内传递一个变量吗?它在此处记录:https://docs.djangoproject.com/en/1.5/ref/templates/builtins/#include
{% include "name_snippet.html" with person="Jane" greeting="Hello" %}
答案 1 :(得分:4)
您可以使用Inclusion Tags从Django模板中呈现其他模板。您还可以从“父”模板传递“子”模板上下文。
它与您的用例有点牵连,但它解决了您的问题。当我循环列表以使用自定义模板呈现每个项目时,我倾向于使用它。然后我可以在其他地方重用该模板,而不需要复制标记,如果我需要渲染另一个相同类型的项目。
答案 2 :(得分:3)
据我所知,django中的块和变量是不同的。 如果要将title作为上下文变量传递,则必须使用base.html中的声明进行设置,例如:
{% include "header.html"%}
其中包含:
{% block title %} {{title}} {%endblock%}
您也可以在家中进行设置。
{%block title%}主页{%endblock%}
但我也尝试在模板上下文中设置。
没有标题栏。
def test_view(ctx):
xa = { "title":"Sommaire"}
return render_to_response("test.html",xa)
我认为您还可以看到with
模板标记我认为可以使用此标记设置上下文变量。