Неожиданные переводы строк Jinja2 при использовании макросовPython

Программы на Python
Ответить
Anonymous
 Неожиданные переводы строк Jinja2 при использовании макросов

Сообщение Anonymous »

Я визуализирую некоторый код YAML с помощью Jinja2, и мне не удается понять, откуда берется эта новая строка при вызове макроса.
Вот мой код YAML:

Код: Выделить всё

names:
- Bob
- Jason
- James
Вот мой шаблон Jinja2:

Код: Выделить всё

{% macro print_name(data)%}
{{ data }}
{% endmacro %}
People {
{% for name in names %}
Name {
{{ print_name(name) }}
}
{% endfor %}
}
Вот код Python, который объединяет все это:

Код: Выделить всё

import yaml
from jinja2 import Environment, FileSystemLoader

def main():
data = yaml.load(open('config_files/test.yml'), Loader=yaml.FullLoader)
env = Environment(loader = FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True)
template = env.get_template('templates/test.j2')

print(template.render(data))

if __name__ == '__main__':
main()
Обратите внимание, что я установил для Trim_blocks значение True, что, как я думал, удалит эти символы новой строки, однако это не сработало.
Я хочу, чтобы это печаталось так:

Код: Выделить всё

People {
Name {
Bob
}
Name {
Jason
}
Name {
James
}
}
Однако это печатается так:

Код: Выделить всё

People {
Name {
Bob

}
Name {
Jason

}
Name {
James

}
}
Обратите внимание на дополнительную новую строку после имени.
Если я добавлю тире в тег вызова макроса, чтобы попытаться удалить лишнюю новую строку, например: { { print_name(name) -}}, то он портит отступ следующей строки и печатает вот так:

Код: Выделить всё

People {
Name {
Bob
}
Name {
Jason
}
Name {
James
}
}
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-macros
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»