簡體   English   中英

如何用'替換字符串中的'\n'<br> ' 在 Flask 應用程序中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM