【发布时间】:2013-05-29 18:59:45
【问题描述】:
我想对构建 django 模板级别有一些建议。
阅读文档,我不明白如何创建超过 2 级的模板层次结构。
例如,我想创建 3 级继承:
base.html
└── base_level2.html
├── level2_level3_1.html
└── level2_level3_2.html
这是我的代码:
-
base.html
First level {% block level2 %}{% endblock %} -
base_level2.html
{% extends "base.html" %} {% block level2 %} Second level {% block level3_1 %}{% endblock %} {% block level3_2 %}{% endblock %} {% endblock %} -
level2_level3_1.html
{% extends "base_level2.html" %} {% block level3_1 %} Third level, part 1 {% endblock %} -
level2_level3_2.html
{% extends "base_level2.html" %} {% block level3_2 %} Third level, part 2 {% endblock %} -
views.py:
def myView(request): return render_to_response('level2_level3_1.html', {}, context_instance=RequestContext(request))
这样我可以在浏览器上看到以下内容:
First level
Second level
Third level, part 1
这对我来说是合乎逻辑的,因为我只在 level2_level3_1.html 上调用 render_to response。
当然,如果调用 level2_level3_2.html,我会收到消息 Third level, part 2,但不会收到 Third level, part1。
如何解决这个问题?这是一个好方法吗?我以这种方式构建了东西,因为我的真实模板非常大,有很多代码行,所以我想保持一些秩序。 任何建议将不胜感激。
【问题讨论】:
-
有什么问题?你想拥有
Third level, part 1和Third level, part 2。为什么不能将两个部分放在同一页面中?它们属于两个不同的块。 -
正如我上面所说的“我以这种方式构造东西,因为我的真实模板非常大......”。这是一个最小的示例,但我的 level2_level3_1.html 和 level2_level3_2.html 实际上很长,我不想将它们合并到一个巨大的单个文件中。
标签: django inheritance django-templates