【发布时间】:2011-05-30 19:57:27
【问题描述】:
我遇到了一个问题,我想在 Django 中使用模板。
这是一个真实的例子: 我有 3 个文件:
- home.html(将获取从 Views 传递的上下文变量)
- base.html(骨架模板文件)
- 和 header.html(包含在 base.html 中)。
如果我将下面的代码直接放在 base.html 中而不包括 header.html,则 {{title}} 变量从home 被正确调用。但是如果我在 base.html 中包含 header.html,则无法调用 {{title}} 变量的值。
<title>{% block title %}{% endblock %} | {{ SITE_INFO_TITLE }}</title>
这个问题有什么解决办法吗?谢谢。
【问题讨论】:
-
以我理解问题的方式为我工作。您能给出导致问题的三个模板的最小示例吗?
-
示例如下:base.html 包含使用 {% include "header.html" %} 的 header.html。 header.html 包含上面的代码
{% block title %}{% endblock %} | {{ SITE_INFO_TITLE }} 用于动态标题生成。 home.html(以及博客和页面的其他模板文件)将通过上下文 (在视图中设置)。 -
我还是不明白问题出在哪里。为什么模板里是
{{ SITE_INFO_TITLE }},渲染上下文里是'title' : 'Welcome...'?? -
{{SITE_INFO_TITLE}} 是我的 Conf 设置中的静态变量(例如公司 XYZ),而“标题”变量将通过视图动态分配。例如。查看标题为“Hello World”的帖子时,整页标题将为:“Hello World |公司 XYZ'
标签: django templates django-templates