5

私はリストを持っています:

list = ['var','var','var']

私のJinjaテンプレートでやりたいことは次のとおりです。

{{'<br>'.join(list)}}

しかし、<br>実際にはページに表示されます。別のものを追加せずにこれを行う方法はありますか

{% for item in list %}
{{item}}
<br>
{% endfor %}
4

1 に答える 1

11

リスト内のすべての要素が安全である場合(つまり、マークアップ、または結果に挿入される前にエスケープする必要のある文字が含まれていない場合)、次のようにマークを付けることができます。

{{'<br>'.join(list)|safe}}

確かに、listそのように使用したい場合は、テンプレートエンジンにフィードする前に、すべてのアイテムをエスケープする必要があります。そうしないと、ページがHTMLインジェクション/ XSSに対して脆弱になる可能性があります(特に、リストにユーザーが送信したデータが含まれている場合)。

更新: @Doobehが指摘しているように、joinフィルターはカスタムの安全なセパレーターを受け入れるため、代わりにそれを使用でき、の内容listは引き続きエスケープされます。

{{ list|join('<br>'|safe) }}
于 2013-02-26T19:35:06.317 に答える