题
我想知道是否有人可以帮我找出解决以下问题的最佳方法。我正在构建一个使用Django模板构建其Web UI组件的Web应用程序。有许多常见的HTML元素,如页眉/页脚,HTML头,标头等。我想编码这些一次和“包含/组合”。它们与其他模板代表核心应用程序功能。
使用Django模板可以吗?如果是这样,我怎么能完成它?
解决方案
您可以使用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/上的django模板有很好的说明1.0 / chapter04 / 。
其他提示
{%extends%}
和 {%include%}
方法适用于在上下文中不需要额外信息的页面元素。
只要您需要从数据库向上下文中插入更多内容,模板标记就会派上用场。例如, contrib。 Django附带的评论
app 定义了 {%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.org 上找到方便的现成模板标签,并且 blogosphere 。
尝试 {%include%}
标记。
不隶属于 StackOverflow