++++ 下部の解決策を参照 (2 回目の更新) ++++
私は Google App Engine と Python の比較的初心者です。
blob として格納されている jinja2 テンプレート (プログラムで生成されたもの) が多数あります (GAE ではプログラムがファイルに書き込むことができないため)。これらの BLOB テンプレートをレンダリングしたいのですが、render ステートメントでそれらを参照する方法がわかりません。
必要に応じて、これらのテンプレートをブロブストアに保存できるかもしれません。
どんな提案でも大歓迎です。このような render ステートメントがどのように見えるかの例は、スーパーです。
(Django のテンプレートを参照することはおそらく似ているのではないかと思うので、タグに Django を含めました。)
ご協力ありがとうございます。
++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++ ++++ 質問のフォローアップを次のように修正しました変数を jinja2 のテンプレート ソースとして使用しようとしています ++++ +++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++ これを TextProperty フィールドで動作させようとしており、次のように簡単なテストを行いました (既にテキスト フィールドを取得していると仮定しています)。
FileTxt = '<html><body><br /><br /><p>The first test value starts here {{val1}}. And {{val2}} is the 2nd test value.</p></body></html>'
val1 = 'H value 1 H'
val2 = 'H second value H'
self.render_template(FileTxt, {'val1': val1, 'val2': val2})
これにより、「無効なファイル名」エラーが返されます。
ファイル ...\templates\... を開こうとしていることに気付きました
私は何らかの形で以下を変更する必要があると思います。
TEMPLATE_DIR = os.path.join(os.path.dirname(__file__), 'templates')
jinja_environment = \
jinja2.Environment(loader=jinja2.FileSystemLoader(TEMPLATE_DIR))
これを変更して、ファイルではなく変数のテンプレートで機能するようにするにはどうすればよいですか? または、ファイルのないバージョンを機能させるには、他に何をする必要がありますか?
ありがとう。
++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++ 以下は機能しています! お二人ともありがとう!++++ ++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++
class TextFileRender(BaseHandler):
def get(self):
val1 = 'H value 1 H'
val2 = 'H second value H'
env = jinja2.Environment(loader=jinja2.FunctionLoader(loader))
self.render_template(env.get_template('y'), {'val1': val1, 'val2': val2})
次に、別の .py ファイルにローダーを追加しました (別のファイルで呼び出してからインポートに追加する関数を常に持たなければならない理由がわかりません)
def loader(x):
r = '<html><body><br /><br /><p>The first test value starts here {{val1}}. And {{val2}} is the 2nd test value.</p></body></html>'
return r
上記は機能しています。しかし、今私の問題は、ある変数の html コンテンツが別の html テンプレート (データストアにも格納されている) を拡張することです。HTML の extends ステートメント ({% extends "master_template.html" %}) を {% extends nv.get_template('master_template') %} のようなものにすることはできますか?
ご協力いただきありがとうございます。