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)。
我正在使用 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)。