如何在jinja2 python中进行换行?

2024-10-02 00:38:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中如何在jinja2中进行换行?

下面是我的代码

t1 = Template("{% for i in range(0, a1) %}|{{ mylist1[i] }}{% for j in range(0, (20 - (mylist1[i]|length))) %}{{ space }}{% endfor %}|{{ dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]] }}{% for j in range(0, (20 - (dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]]|length))) %}{{ space }}{% endfor %}|\n{{ string }}{% endfor %}")

此代码将导致: enter image description here 由于水平方向太长,我想用几行字来写。

但是,如果我像下面这样使用python做我通常做的事情:

t1 = Template("{% for i in range(0, a1) %}|\
               {{ mylist1[i] }}\
               {% for j in range(0, (20 - (mylist1[i]|length))) %}\
                    {{ space }}\
               {% endfor %}|\
               {{ dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]] }}\
               {% for j in range(0, (20 - (dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]]|length))) %}\
                   {{ space }}\
               {% endfor %}|\n\
               {{ string }}\
               {% endfor %}")

结果会是 enter image description here

有人能帮我解决这个问题吗?

谢谢你。


Tags: 代码injinja2forstringa1rangetemplate
2条回答

Python保留空间,因此您也可以在结果中看到它们。

str = "{% for i in range(0, a1) %}|\"
str += "{{ mylist1[i] }}\"
str += "{% for j in range(0, (20 - (mylist1[i]|length))) %}\"
str += "{{ space }}\"
str += "{% endfor %}|\"
str += "{{ dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]] }}\"
str += "{% for j in range(0, (20 - (dicts[mylist1[i]]"
str += "[dicts[mylist1[i]].keys()[0]]|length))) %}\"
str += "{{ space }}\"
str += "{% endfor %}|\n\"
str += "{{ string }}\"
str += "{% endfor %}")"

# and then use the generates string
t1 = Template(str);

不应该使用像in this answer这样的字符串连接。在你的例子中,利用括号和implicit string concatenation

t1 = Template("{% for i in range(0, a1) %}|{{ mylist1[i] }}\n"
              "    {% for j in range(0, (20 - (mylist1[i]|length))) %}\n"
              "        {{ space }}\n"
              "    {% endfor %}|{{ dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]] }}\n"
              "    {% for j in range(0, (20 - (dicts[mylist1[i]][dicts[mylist1[i]].keys()[0]]|length))) %}\n"
              "        {{ space }}\n"
              "    {% endfor %}|\\n{{ string }}\n"  # Notice "\\n" to keep it for Jinja.
              "{% endfor %}")

相关问题 更多 >

    热门问题