18

我想知道是否有人可以帮助我找出解决以下问题的最佳方法。我正在构建一个使用 Django 模板来构建其 Web UI 组件的 Web 应用程序。有许多常见的 HTML 元素,例如页眉/页脚、HTML 标题、标头等。我想对这些进行一次编码,然后将它们与代表核心应用程序功能的其他模板“包含/组合”。

这可能使用 Django 模板吗?如果是这样,我该怎么做呢?

4

3 回答 3

36

您可以使用 django 的extends标签。假设您有页眉和页脚。你可以制作一个模板,比如说,foo.django:

<h1>My HTML Header</h1>
<!-- an so on -->

{% block content %}
{% endblock %}

<!-- html footer -->

然后,您可以制作另一个模板,例如 bar.django:

{% extends "foo.django" %}

{% block content %}
This overrides the content block in foo.django.
{% endblock %}

...然后将呈现:

<h1>My HTML Header</h1>
<!-- an so on -->

This overrides the content block in foo.django.

<!-- html footer -->

在http://www.djangobook.com/en/1.0/chapter04/上有关于 django 模板的很好的说明。

于 2009-01-02T22:24:58.293 回答
13

{% extends %}{% include %}方法适用于在上下文中不需要额外信息的页面元素。

只要您需要将更多内容从数据库中插入到上下文中,模板标签就会派上用场。例如,Django 包含的contrib.comments应用程序{% get_comment_list %}定义了一个模板标签,用于检索附加到给定模型实例的注释。以下是您将如何使用它:

<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
  <p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
  {{ comment.comment }}
{% endfor %}
</div>

您可以将其保存在单独的模板中,并将{% include %}其保存在其他模板中。

对于您自己的内容,您可以编写自己的自定义模板标签。按照文档只要有可能,使用简单标签机制编写标签会很方便。您可以在djangosnippets.orgblogosphere上找到方便的现成模板标签。

于 2009-01-20T09:57:52.407 回答
6

试试{% include %}标签。

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#include

于 2009-01-02T22:22:33.803 回答