如何在Django与HTML模板中实现换行而非显示' '或'<br/>'
解决Django模板表格中字符串换行问题
Django默认会自动转义HTML内容,这就是你用<br/>或\n无法实现换行的原因——前者被转义成纯文本显示,后者在HTML里本身就不会触发换行。以下两种方案可以解决:
方案1:如果字符串已包含<br/>标签
使用safe过滤器告诉Django该内容是安全的HTML,无需转义:
<table border='1'> {% for x in datas %} <tr> <td>{{ x.0 }}</td> <td>{{ x.1 }}</td> <td>{{ x.3|safe }}</td> </tr> {% endfor %} </table>
方案2:如果字符串是带\n的纯文本
使用linebreaksbr过滤器将换行符转换为<br/>标签,同时自动处理安全问题:
<table border='1'> {% for x in datas %} <tr> <td>{{ x.0 }}</td> <td>{{ x.1 }}</td> <td>{{ x.3|linebreaksbr }}</td> </tr> {% endfor %} </table>
额外说明
- 若需要将换行分隔的文本块包裹成
<p>段落标签,可以替换成linebreaks过滤器。 - 注意
safe过滤器仅适用于你完全信任的内容,避免用户输入的内容直接使用,防止XSS攻击。
内容的提问来源于stack exchange,提问作者hello00
相关产品推荐
相关产品推荐

