2016-07-28 5 views
6

私はPythonでは比較的経験がないので、jinja API document at pocoo.orgを読むと迷ってしまいました。それは読む:ファイルシステムからジンジャーテンプレートを直接ロードする方法

アプリケーション用のテンプレートをロードするようにJinja2のを設定するための最も簡単な方法は、おおよそ次のようになります。
from jinja2 import Environment, PackageLoader 
env = Environment(loader=PackageLoader('yourapplication', 'templates')) 
これはデフォルトの設定でテンプレート環境とでテンプレートを検索し、ローダを作成します。 テンプレートフォルダ yourapplication pythonパッケージ内にあります。

あなたのテンプレートを使ってPythonパッケージを作成/インストールしなければならないので、これはあまり簡単ではありません。コードを配布するつもりがない場合は、複雑さが増します。あなたはトピックherehereのSO質問を参照することができますが、答えは曖昧で不満です。

初心者がやりたいことは明らかに、パッケージ内のリソースではなく、ファイルシステムから直接テンプレートをロードすることです。 これはどのように行われますか?代わりにPackageLoaderFileSystemLoaderを使用します。

答えて

15

はここでどのようにです。私はウェブで例を見つけたherehere。あなたはあなたのテンプレートと同じディレクトリにある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) 

それは結局のところ、Jinja2のAPIのドキュメントはありませんsection which discusses all the built-in loadersを持っているので、すぐにそれを気付かなかったのは恥ずかしいことです。しかし、紹介はPackageLoaderがデフォルトの "最も単純な"方法のように言われています。 Pythonへの新規参入者にとって、これは野生のガチョウの追跡につながる可能性があります。

+10

ファイルからテンプレートを読み込むことはできません。 'jinja2.load_template( 'template.html')' – Matt

関連する問題