我想知道是否有人可以幫助我找出解決以下問題的最佳方法。我正在構建一個使用Django模板構建Web UI組件的Web應用程序。有許多常見的HTML元素,例如頁眉/頁腳,HTML頭,標頭等。我想對這些代碼進行編碼,並將它們與代表核心應用程序功能的其他模板「包括/組合」。在單個請求中組合多個Django模板
這可能使用Django模板?如果是的話,我該如何去完成呢?
我想知道是否有人可以幫助我找出解決以下問題的最佳方法。我正在構建一個使用Django模板構建Web UI組件的Web應用程序。有許多常見的HTML元素,例如頁眉/頁腳,HTML頭,標頭等。我想對這些代碼進行編碼,並將它們與代表核心應用程序功能的其他模板「包括/組合」。在單個請求中組合多個Django模板
這可能使用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 -->
在django模板http://www.djangobook.com/en/1.0/chapter04/上有很好的說明。
嘗試使用{% include %}
標記。
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#include
{% extends %}
和{% include %}
方法適用於在上下文中不需要額外信息的頁面元素。
只要您需要在數據庫的上下文中插入更多內容,模板標籤就會變得方便。例如,Django附帶的contrib.comments
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 %}
它在其他模板。
對於您自己的內容,您可以編寫自己的自定義模板標籤。按照the documentation。只要有可能,使用simple tag機制編寫標籤很方便。您可以在djangosnippets.org和blogosphere上找到方便的現成模板標籤。