Невозможно получить новые строки с "\ n" из шаблона для фактического вывода, используя jinja2 - PullRequest
1 голос
/ 17 апреля 2020

Я пытаюсь сгенерировать файл xml с модулем jinja2, используя template. Почему-то я не могу получить новую строку с \n от шаблона до фактического вывода.

Это xml -темплет. xml:

<module>
    <group name="abc">
        <subinst entity="x" id="0" />
        {% for n in range(count) %}<subinst entity="y"    id="{{n}}" />\n {% endfor %}
    </group>
</module>

Это мой скрипт :

from jinja2 import Template, Environment, FileSystemLoader
count = 3
file_loader = FileSystemLoader('templates')
env = Environment(loader=file_loader, keep_trailing_newline=True)
template = env.get_template('xml-template.xml')
output = template.render(count=count)
print(output)

Когда я запускаю свой скрипт, я получаю \n в том виде, как оно есть, вместо новых строк в выводе, как показано ниже.

Это мой ожидаемый вывод:

<module>
    <group name="abc">
        <subinst entity="x" id="0" />
        <subinst entity="y" id="0" />
        <subinst entity="y" id="1" />
        <subinst entity="y" id="2" />
    </group>
</module>

Я пытался использовать <br> (что верно для HTML), пытался использовать keep_trailing_newline=True, но ничего не помогло.

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 17 апреля 2020

+ 1 для очень хорошо написанного вопроса с примером кода и ожидаемым выводом.

Я получил это для работы с использованием этого шаблона (убедитесь, что табуляции и пробелы в этом файле согласованы) :

<module>
    <group name="abc">
        <subinst entity="x" id="0" />
        {% for n in range(count) %}
        <subinst entity="y" id="{{n}}" />
        {% endfor %}
    </group>
</module>

И эта среда (из этого ответа: { ссылка }):

env = Environment(loader=file_loader,lstrip_blocks=True,trim_blocks=True)

Пример:

In [84]: print(output)
<module>
    <group name="abc">
        <subinst entity="x" id="0" />
        <subinst entity="y" id="0" />
        <subinst entity="y" id="1" />
        <subinst entity="y" id="2" />
    </group>
</module>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...