![](/img/trans.png)
[英]Regex - Replace \\n and \n in string by <br> but not \\\\n
[英]How to replace '\n' in string with '<br>' in Flask app?
在將字符串傳遞給 Flask 中的 HTML 頁面之前,我一直在嘗試修改字符串(將出現的 '\n' 替換為 '<br>'),但我使用的典型方法由於某種原因不起作用。
finalstring = textstring.replace('\n', '<br>')
return render_template('my-form-result.html', emailresponse = finalstring)
這應該有效,但由於某種原因,沒有任何東西被替換。 我怎樣才能讓它工作? 謝謝!
在 HTML 中替換\n
的更好方法是使用 CSS styles 。
你的replace()
沒問題。 調試您的代碼並確保在replace()
之前有\n
。
為了能夠查看 HTML 中的換行符,您應該在模板中使用safe
過濾器。 但請注意,您對 XSS 攻擊持開放態度。 為了解決這個問題,您應該在替換\n
字符之前轉義字符串。 這是代碼:
from flask import escape
...
...
safe_html = str(escape(text)).replace('\n', '<br/>')
return render_template('[HTML file].html', safe_html=safe_html)
---------
#in the template:
<span> {{ safe_html | safe }} </span>
如果您在替換之前不使用str()
調用,那么<br/>
也會被轉義。 因為escape()
的返回值不是string
。
免責聲明:我從未與 Flask 合作過,我只是查了一下,希望它能做你想做的事。
因此,在模板my-form-result.html
某處,您應該找到包含以下內容的行:
{{ emailresponse }}
您可以將其替換為:
{% for line in emailresponse.split('\n') %}
{{ line }}
<br />
{% endfor %}
在每個換行符后添加br
您的replace()
代碼是正確的。 確保您在模板中轉義了 HTML:
{{ emailresponse|safe }}
要診斷,試試這個:
finalstring = textstring.replace('\n', '<br>')
print(finalstring)
return render_template('my-form-result.html', emailresponse = finalstring)
此外,向我們展示 web 頁面的源代碼,以查看模板中實際呈現的內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.