10

Django Web サイトで Jinja2 を試しています。

現在、Jinja2 は公式の Django テンプレート エンジンではなく、Jjinja2 より前に使用していたテンプレート タグの認識/読み込みを拒否しているためです。

では、テンプレートタグの作成に変更があったとしても、どうすればサードパーティアプリ全体に反映できるのでしょうか?

その場合、システムは Jinja2 に従って動作する必要があるため、Jinja2 を使用することは不可能に思えます。

coffin( Jinja-Django のアダプタとしても使用しています)。

4

3 に答える 3

1

あなたは棺でこれを行うことができます。Coffin は、jinja2 テンプレート内で使用する django スタイルのタグを登録する方法を提供します。

from coffin import template
from ThrdPartyDjangoLib import djangoTagIWantToUse
register = template.Library()

register.tag('djangoTagIWantToUse', djangoTagIWantToUse)
于 2012-06-11T11:50:00.630 に答える
1

coffin docsによると、カスタム django テンプレート タグをカスタム Jinja2 拡張機能として書き直す必要があります。

jinja2 マクロ機能を使用して、Django のテンプレート タグをエミュレートすることもできます。最も顕著な違いは、Jinja2 マクロの場合、テンプレート コンテキストを介してすべてのコンテキスト データを提供する必要があるのに対し、Django タグでは他の方法 (データベースからの読み込みや他の Python ライブラリの呼び出しなど) を使用してデータにアクセスできることです。

私はしばらくの間、Jinja2 テンプレートを使用してきましたが、カスタム テンプレート タグを作成する必要はありませんでした。

サイトの 1 つのアプリで django テンプレートを使用し、別のアプリで jinja2 を使用することは可能ですが、問題はありませんが、django テンプレートから jinja2 テンプレートをインポートまたは拡張したり、その逆を行ったりすることは容易ではありません。

于 2012-06-11T22:54:55.983 に答える
0

テンプレートエンジンはシステムのコア部分であるため、Django の構造上、テンプレートエンジンを交換することはできません。を使用してできたとしてもcoffin、それはサポートされている構成ではなく、サードパーティのモジュールがそれをサポートすることは期待できません。sqlalchemydjango を動作させる方法を見つけたので、サードパーティのモジュールにサポートを依頼するのと同じです。

jinja2 を使用する場合は、プラグ可能なテンプレート エンジンを使用して設計されたフレームワーク、またはテンプレート エンジンを使用しないフレームワークを使用してください。

統合ページには、Jinja2 に付属するすぐに使用できる統合がリストされています。Pyramidそのページでは、それがサポートされていることがわかります。これは、設計上、ピラミッドがプラグ可能なコンポーネントを許可しているためです。

Flask(の背後にいる同じ人々によって作成されたJinja2) は、Jinja2 をネイティブにサポートしています。

于 2012-06-11T06:37:00.910 に答える