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 %}andメソッドは{% 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 に答える