Django - define模板在一个地方包含/扩展,就像在urls.py中定义url路径一样



我真的很享受从PHP到Python/Django的过渡以及扩展模板的能力。然而,我仍然发现我在定义模板和扩展其他模板等方面仍然做了相当多的重复工作。只是想知道是否有人知道任何方法抽象出所有这些到一个文件,告诉哪些模板其他模板应该扩展/包括?

简单的答案是,不使用默认功能。将诸如{% base %}标记之类的内容抽象到另一个文件中会使模板更难阅读。

消除"额外工作"的一种方法是让你的编辑为你做。在我的例子中,我将所有模板定义为.dhtml文件,并在打开空.dhtml文件时使用VIM将模板粘贴到文件中。大多数以编程为中心的编辑器都内置了此功能,以防止您手动复制/粘贴或重新键入基本结构。

另一件需要考虑的事情是,您可能正在以一种不太理想的方式构建模板本身。例如,如果您有不同的基本模板,您可以用CSS替换不同的基本模板吗?CSS可以以程序员有时会忽略的方式改变模板。一个很好的例子,看看CSS禅宗花园。您看到的变化是惊人的,它们根本没有改变基本HTML。

对于这样的更改,您可以简单地在templates/base.html中这样做:
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/default.css" />
{% block extracss %}{% endblock %}

为了包含一个覆盖CSS,你把它放在你的模板中:

{% extends "base.html" %}
{% block extracss %}
    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/orchid_beauty.css" />
{% endblock %}

最新更新