[解決済み] ファイルシステムから直接jinjaテンプレートを読み込む方法
2022-08-10 22:38:07
質問
その jinja API ドキュメント(pocoo.org)。 には、次のような記述があります。
アプリケーションのテンプレートをロードするために Jinja2 を設定する最も簡単な方法は、おおよそ次のようなものです。
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
これは、デフォルトの設定でテンプレート環境を作り、テンプレートを探すローダーを テンプレート フォルダの中にある アプリケーション pythonパッケージの中にあります。
結局のところ、これはそれほど単純ではありません。なぜなら、あなたのテンプレートを含むpythonパッケージを作成/インストールしなければならず、特にあなたのコードを配布する意図がない場合は、多くの不必要な複雑さが発生するからです。 このトピックに関するSOの質問を参照することができます ここで と はこちら といった具合に、曖昧で納得のいかない答えが返ってきます。
素朴な初心者がやりたいことは、明らかに、パッケージ内のリソースとしてではなく、ファイルシステムから直接テンプレートをロードすることです。
これはどのように行われるのでしょうか。
どのように解決するのですか?
方法は以下の通りです。
を使用します。
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)
jinja2 API のドキュメントには
セクションがあり、すべての組み込みローダを議論しています。
があり、すぐにそれに気づかなかったのはちょっと恥ずかしかったです。 しかし、その紹介は次のような表現になっています。
PackageLoader
がデフォルトで最もシンプルな方法であるように見えます。 Pythonの初心者にとっては、これは無駄足になる可能性があります。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?