jinja2 模板中的 \n 会产生问题吗?

Will \n in jinja2 templates create a problem?

我正在使用 jinja2 模板创建 table。当我开始在一行中编写所有 html 代码时,它会破坏通过电子邮件发送的 table。

所以我在写

table_row = '<tr>\
                    <td>{{dev}}</td>\
                    <td>{{pr_count}}</td>\
                </tr>'
table_row_template = jinja2.Template(table_row)

在一个大循环中,我开始使用行模板将数据附加到 table。

for developer in developer_json:
     dev_count_list = dev_count_list\
                     + table_row_template.render(dev = dev_count[0], pr_count = dev_count[1]) + '\n'

最后,当我在基础模板中使用 dev_count_list 进行渲染时,一切正常。

我的问题 - \n 是如何被 jinja2 模板解释的。它会添加一个新行还是再次写入 \n

考虑这个最小的例子:

t = Template("Hello \n{{ something }}!")
output = t.render(something="World")
print(output)
for b in bytearray(output, 'ascii'):
    print(b, chr(b))

这会逐字节生成呈现的字符串:

Hello 
World!
72 H
101 e
108 l
108 l
111 o
32  
10 

87 W
111 o
114 r
108 l
100 d
33 !

因此,如您所见,呈现输出字符串时会保留 \n 字符(LF,十进制为 10)。