私はリストを持っています:
list = ['var','var','var']
私のJinjaテンプレートでやりたいことは次のとおりです。
{{'<br>'.join(list)}}
しかし、<br>
実際にはページに表示されます。別のものを追加せずにこれを行う方法はありますか
{% for item in list %}
{{item}}
<br>
{% endfor %}
リスト内のすべての要素が安全である場合(つまり、マークアップ、または結果に挿入される前にエスケープする必要のある文字が含まれていない場合)、次のようにマークを付けることができます。
{{'<br>'.join(list)|safe}}
確かに、list
そのように使用したい場合は、テンプレートエンジンにフィードする前に、すべてのアイテムをエスケープする必要があります。そうしないと、ページがHTMLインジェクション/ XSSに対して脆弱になる可能性があります(特に、リストにユーザーが送信したデータが含まれている場合)。
更新: @Doobehが指摘しているように、join
フィルターはカスタムの安全なセパレーターを受け入れるため、代わりにそれを使用でき、の内容list
は引き続きエスケープされます。
{{ list|join('<br>'|safe) }}