ファイルシステムからJinjaテンプレートを直接ロードする方法 質問する

ファイルシステムからJinjaテンプレートを直接ロードする方法 質問する

pocoo.org の jinja API ドキュメント状態:

アプリケーションのテンプレートをロードするように Jinja2 を構成する最も簡単な方法は、おおよそ次のようになります。

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', templates'))

これにより、デフォルト設定のテンプレート環境と、テンプレートを検索するローダーが作成されます。テンプレートフォルダ内のあなたの申請Python パッケージ。

結局のところ、これはそれほど簡単ではありません。テンプレートを含む Python パッケージを作成/インストールする必要があり、特にコードを配布するつもりがない場合は、多くの不必要な複雑さが生じます。

これに関して、次のような関連する質問を見つけましたが、回答は曖昧で満足のいくものではありませんでした。

パッケージ内のリソースとしてではなく、ファイルシステムから直接テンプレートをロードするにはどうすればよいですか?

ベストアンサー1

FileSystemLoaderの代わりにを使用しますPackageLoader。テンプレートと同じディレクトリに python ファイルがあるとします。

./index.py
./template.html

この index.py はテンプレートを見つけてレンダリングします。

#!/usr/bin/python
import jinja2

templateLoader = jinja2.FileSystemLoader(searchpath="./")
templateEnv = jinja2.Environment(loader=templateLoader)
TEMPLATE_FILE = "template.html"
template = templateEnv.get_template(TEMPLATE_FILE)
outputText = template.render()  # this is where to put args to the template renderer

print(outputText)

序文では、このPackageLoaderアプローチはデフォルトの「最も単純な」方法として紹介されているようですが、セクションすべての組み込みローダーについて説明します。

おすすめ記事