Q&A
Jinja2 未定義なテンプレート変数が消えてしまう問題
特定のテンプレート変数が未定義な render() をすると、
当該のテンプレート変数が空欄に置換されてしまう現象を阻止したいと思っています。
未定義なテンプレート変数に対しては、何も処理を行わないのが理想です。
ひとつの文字列に対して複数回の render() しようとして、この問題に衝突しました。
発生している困った現象
html
1<h1 class="{{sitaNameClass}}">{{siteName}}</h1> 2↓ 3<h1 class="headerH1"></h1> 4↓ 5<h1 class="headerH1"></h1>
発生してほしい理想の現象
html
1<h1 class="{{sitaNameClass}}">{{siteName}}</h1> 2↓ 3<h1 class="headerH1">{{siteName}}</h1> 4↓ 5<h1 class="headerH1">サイト名</h1>
やっている処理
python
1html = '<h1 class="{{sitaNameClass}}">{{siteName}}</h1>' 2tmplDictDict = { 3 'classDict': {'sitaNameClass': 'headerH1'}, 4 'stringDict': {'siteName': 'サイト名'}, 5} 6for iKey in tmplDictDict: 7 html = Template(html).render(tmplDictDict[iKey])
解決策は jinja2 の仕様を利用したテクニックでなくとも問題ありません。
上記のコードは例です。実際には render() は3回、4回と何度も行われます。
よろしくお願いいたします。
回答2件
良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/10/16 11:36