如何在Python向HTML传递多行字符串时保留换行格式?
解决Python传递多行字符串到HTML显示为单行的问题
这个问题很常见,主要是因为HTML的默认文本渲染规则导致的——它会把连续的空白字符(包括换行、空格)都合并成一个空格,所以你的多行代码就变成单行啦。给你两种简单的解决办法:
方法1:使用HTML <pre> 标签保留原始格式
<pre> 标签的作用就是预格式化文本,它会完全保留你字符串里的换行、空格和缩进,非常适合展示代码这类需要格式的内容。
只需要在你的HTML模板里把变量包裹在 <pre> 标签中就行:
<div> <pre>{{ device }}</pre> </div>
方法2:将换行符转换为HTML的 <br> 标签
如果你不想用 <pre> 自带的等宽字体(或者需要更灵活的样式控制),可以在Python端把字符串里的换行符 \n 替换成HTML的换行标签 <br>,然后在模板里用 safe 过滤器告诉Jinja2不要转义这些HTML标签。
修改Python代码:
@app.route("/<faqid>") @is_logged_in def faqid(faqid): device = """ class-map match-any eftv6-bun-1 match access-group ipv6 eftv6-bun end-class-map ! policy-map qp-80 class eftv6-bun-1 set dscp af31 ! class class-default ! end-policy-map ! """ # 把换行符替换成HTML的<br>标签 device_formatted = device.replace('\n', '<br>') return render_template("faqdetails.html", device=device_formatted)
修改HTML模板:
<div>{{ device|safe }}</div>
两种方法各有优劣:<pre> 省心省力,适合代码展示;<br> 方式更灵活,方便你用CSS自定义文本样式。
内容的提问来源于stack exchange,提问作者Irfan
相关产品推荐
相关产品推荐

