このジンジャnl2br
フィルターを実装しようとしています。<br>
追加する がエスケープされていることを除いて、正しく機能しています。<p>
がエスケープされておらず、すべて同じ文字列にあるため、これは奇妙です。
Jinjaautoescape
が有効になっているので、フラスコを使用しています。この男が とが二重エスケープを引き起こしている可能性があるautoescape
と言っているのを見つけたとき、私は本当に期待していましたが、 を削除しても解決しませんでした。escape(value)
escape()
ここに私の変更されたコードとその出力があります:
@app.template_filter()
@evalcontextfilter
def nl2br(eval_ctx, value):
_paragraph_re = re.compile(r'(?:\r\n|\r(?!\n)|\n){2,}')
result = u'\n\n'.join(u'<p>%s</p>' % escape(p.replace(u'\r\n', u'<br>\n')) for p in _paragraph_re.split(value))
if eval_ctx.autoescape:
result = Markup(result)
return result
入力:
u'1\r\n2\r\n\r\n3\r\n4\r\n\r\n5\r\n6\r\n7'
出力:
<p>1<br>
2</p>
<p>3<br>
4</p>
<p>5<br>
6<br>
7</p>
望ましい出力:
<p>1<br>2</p>
<p>3<br>4</p>
<p>5<br>6<br>7</p>
<br>
's がエスケープされているのに 's が許可されている原因は何<p>
ですか?