私は GAE/Python 初心者です。テンプレート値がディクショナリ オブジェクトにある jinja2 テンプレートをレンダリングしようとしています。私はこのようなことをしたいと思います:
some markup {{ dict['token001'] }} some more markup {{ dict['token002'] }} etc.
ここで、token001 と token002 は Dictionary 内のキーの値です。
呼び出しは次のようになると思います:
template = jinja_environment.get_template(fileName.html)
outputblob = template.render(dict)
どうすればこれを達成できるか教えてもらえますか? 1,000 個を超えるトークン化されたファイルがあり、ファイルごとに最大数十個のトークンがあります。データベースには同じトークンに対して複数の値のセットがあり、ロジックはトークンと値の 1 つのセットを取り出して辞書に入れます。これが、レンダリングのために jinja2 に渡したいものです。
辞書キーがテンプレート トークンである jinja2 に辞書オブジェクトを渡す方法を教えてもらえますか?
解決策への提案や指針をありがとう。
+++++編集された質問++++++ 次のことを試してみましたが、ある程度までは機能しているようです。
テンプレート ファイルのトークンは {{tokenvals.tkn001}} のようになります
tokenvals = q.fetch(999)
tokendict = {}
for tokenval in tokenvals:
tokendict[tokenval.tknID] = tokenval.tknValue
template = jinja_environment.get_template('khan-exercise.html')
bloboutput = template.render(tokenvals = tokendict)
少なくとも、この時点までエラー メッセージは表示されません。ただし、次のコードで結果を保存しようとすると、エラーが発生します。
f = GeneratedFiles(
TemplateName = TemplateName
, FileTxt = bloboutput
, Status = 'Published'
)
f.put()
これにより、エラー BadValueError: Expected str, got u' が発生します
データのモデルは次のとおりです。
class GeneratedFiles(ndb.Model):
TemplateName = ndb.StringProperty()
FileTxt = ndb.BlobProperty()
Status = ndb.StringProperty(default="Pending Translation")
私が気づいたことの 1 つは、レンダリングされた文字列には、キャリッジ リターンがあるすべての場所に \n が含まれていることです。ただし、表示されるテキスト全体は、アポストロフィ (単一引用符 - ') で囲まれた文字列です。テンプレート ファイル自体には、多くの二重引用符が含まれています - "。それとは何の関係もないと思います。
私は頻繁にエラーメッセージを見てきました: 予期された str, got u' の後にテキストが続き、何が原因かわかりませんでした.
さらなる提案をいただければ幸いです。