Flask Jinja2模板返回模板时未保持文本缩进?

Flask Jinja2模板返回模板时未保持文本缩进?,flask,jinja2,Flask,Jinja2,我有一个简单的html模板,它打开一个文本文件并返回网页上的内容,如下所示。它还突出显示带有“标记”标记的某些文本。它工作得很好,只是文本没有像在源文件中那样保留缩进 源代码如下所示,其中一些行缩进 interface Ethernet3/3 ! interface Vlan1 no ip address shutdown ! interface Vlan10 ip address 192.168.10.2 255.255.255.0 ! ip forward-protocol nd !

我有一个简单的html模板,它打开一个文本文件并返回网页上的内容,如下所示。它还突出显示带有“标记”标记的某些文本。它工作得很好,只是文本没有像在源文件中那样保留缩进

源代码如下所示,其中一些行缩进

interface Ethernet3/3
!
interface Vlan1
 no ip address
 shutdown
!
interface Vlan10
 ip address 192.168.10.2 255.255.255.0
!
ip forward-protocol nd
!
但是我为Jinja2模板编写的代码将像这样返回,所有内容都向左齐平,不保留缩进

interface Ethernet3/3
!
interface Vlan1
no ip address
shutdown
!
interface Vlan10
ip address 192.168.10.2 255.255.255.0
!
ip forward-protocol nd
!

将open(“testfile.txt”、“r”)作为f:
textfile=[line.strip()表示f中的行]
返回渲染模板('my-form.html',textfile=textfile)
HTML模板具有以下特性:;
{文本文件%中的行的%s}
{%if第%'行中的“接口”}
{{line}}

{%else%} {{line}}

{%endif%} {%endfor%}

在将文本发送到模板时,如何保持缩进?

正如@Freguglia所说,
line.strip
删除前导空格

最好只加载以下文件:

with open("testfile.txt", "r") as f:
    textfile = f.read()
此外,大多数浏览器不会显示多个空格,除非您将该文本包装在
标记中。如果源文件具有更高级别的缩进,则您希望模板代码为:

<pre>{{textfile}}</pre>
{{textfile}

line.strip()
删除前导空格。只需跳过
strip()
调用,它就会按预期工作。此外,您还可以在渲染之前添加一个
print(textfile)
语句,以检查是否将正确的结果传递给
render\u template()
,并跟踪出错的地方。谢谢,看起来这就是问题所在。我必须使用readlines(),但如下所示:使用open(“testfile2.txt”,“r”)作为f:textfile=f.readlines()
<pre>{{textfile}}</pre>