如何在 jinja2 python 中进行换行?

ben*_*ben 3 python jinja2

如何在 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 %}")
Run Code Online (Sandbox Code Playgroud)

该代码将导致: 在此输入图像描述 由于横向太长,所以我想把它们写成几行。

但是,如果我按照我通常在 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 %}")
Run Code Online (Sandbox Code Playgroud)

结果将是 在此输入图像描述

谁能帮我解决这个问题吗?

谢谢。

Wlo*_*oHu 5

您不应该像此答案中那样使用字符串连接。在您的情况下,请利用括号和隐式字符串连接

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 %}")
Run Code Online (Sandbox Code Playgroud)