25

Django には、一般的な HTML マークアップを生成するためのテンプレート タグがありますか? たとえば、次を使用してURLを取得できることを知っています

{% url mapper.views.foo %}

しかし、それは URL だけを提供し、リンクを作成するための HTML コードは提供しません。Django には Rails の link_to ヘルパーに似たものがありますか? django-helpersを見つけましたが、これはよくあることなので、Django には何かが組み込まれていると思いました。

4

6 に答える 6

26

いいえ、そうではありません。

James Bennettは、 Railsの組み込みJavaScriptヘルパーに関して、しばらく前に同様の質問に答えました。

Djangoに「ヘルパー」機能が組み込まれる可能性はほとんどありません私が正しく理解していれば、その理由は、物事をゆるく結合しておくというDjangoのコア哲学に関係しています。この種のヘルパー機能が組み込まれていると、Djangoを特定のJavaScriptライブラリまたは(あなたの場合は)htmlドキュメントタイプと結合することになります。

例えば。HTML 5が最終的に実装され、DjangoがHTML 4またはXHTMLマークアップを生成している場合はどうなりますか?

そうは言っても、Djangoのテンプレートフレームワークは非常に柔軟であり、必要なことを実行する独自のタグ/フィルターを作成することはそれほど難しくありません。私自身はほとんどデザイナーで、チャームのように機能するカスタムタグをいくつかまとめることができました。

于 2008-09-15T22:22:19.897 に答える
24

ヘルパーの目的は、他の人が暗示しているように、HTML の書き方を知らない開発者を助けることではありません。その目的は、共通の機能をカプセル化することです。つまり、同じことを何千回も記述する必要はありません。また、アプリ全体で使用される共通の HTML を編集するための単一の場所を提供します。

テンプレートと SSI が便利な理由は同じです。ヘッダーとフッターに HTML を記述する方法を知らないからではありませんが、HTML を一度だけ記述したい場合があります。

例えば。HTML 5 が最終的に実装され、Django が HTML 4 または XHTML マークアップを生成している場合はどうなりますか?

HTML 5 が実装され、すべてのテンプレートが繰り返しの HTML で記述されている場合にも同じことが起こりますが、はるかに簡単です。

他の投稿はすでに質問に答えており、カスタム テンプレート タグに関するドキュメントにリンクしています。タグとフィルターを使用して独自のものを作成できますが、組み込みはありません。

于 2009-09-19T17:24:21.337 に答える
2

それらが組み込まれているようには見えませんが、ここにいくつかのスニペットがあります. これらのヘルパーを作成するのはかなり簡単に思えます:

http://www.djangosnippets.org/snippets/441/

于 2008-09-14T16:48:38.833 に答える
1

Django に組み込まれているすべてのテンプレート タグとフィルターの一覧を次に示します。Django の貢献者は Web 開発者が HTML をよく知っていると想定していたため、Django コアには Rails ほど多くの HTML ヘルパーがありません。saturdaypalace が述べているように、AJAX ヘルパーが Django に追加される可能性はほとんどありません。これは、Django を特定の JavaScript ライブラリと結合することにつながるためです。

Django で独自のテンプレート タグを作成するのは非常に簡単です (多くの場合、Rails と同様に、1 つの関数を定義するだけで済みます)。Rails ヘルパーのほとんどは、1 日か 2 日で Django に再実装できます。

于 2008-09-15T23:05:10.263 に答える
0

何が一般的な htmlであるかについての同意がある場合は、完全を期すために (または他の人が持っているため)、ヘルパー モジュールも存在するに違いありません。;)

それ以外では、Django テンプレート システムは主に HTML の人々向けに作られています。HTMLの人々p既に. 反対側には、コードを記述し、コンテキストに配置した変数が囲まれているかどうかを気にしない Python 開発者がいます(関心の分離パラダイムの完全な例)。これら 2 つの世界を結合する必要がある場合は、自分で行う必要があります (または、他のコードを探す必要があります)。imgadivspan

于 2008-09-17T11:27:31.140 に答える
-1

これは質問に直接答えるものではありませんが<a href="{% url mapper.views.foo %}">foo</a>、テンプレートで使用しないのはなぜですか?

于 2008-09-16T12:10:40.763 に答える