Скрипт запускается дважды при рендеринге шаблона jinja2?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Скрипт запускается дважды при рендеринге шаблона jinja2?

Сообщение Anonymous »

У меня есть скрипт Python, который отображает шаблон jinja2. Примерно так:

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

basic.py

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

#!/usr/bin/env python3
from jinja2 import Environment, PackageLoader, select_autoescape

env = Environment(
loader=PackageLoader('basic'),
autoescape=select_autoescape()
)

print(env.get_template('basic_template.md').render({'version': 'version123', 'date': 'some-date'}))
Моя структура каталогов выглядит следующим образом:

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

.
|__ templates/
|   |
|   |__ basic_template.md
|
|__ basic.py
Я запускаю это в конвейере CI. Задание запускает следующую команду: python /path/to/basic.py.
При каждом запуске весь скрипт выполняется дважды. Это вызвано переменной env, в частности PackageLoader('basic'). Я почти уверен, что когда он загружается, он запускает скрипт Basic.py (снова) - из Basic.py.
Если я создам пустой фиктивный скрипт и используйте его в PackageLoader, мой скрипт работает нормально (отрисовывает шаблон только один раз):

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

.
|__ templates/
|   |
|   |__ basic_template.md
|
|__ basic.py
|
|__ other_script.py

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

#!/usr/bin/env python3
from jinja2 import Environment, PackageLoader, select_autoescape

env = Environment(
loader=PackageLoader('other_script'),
autoescape=select_autoescape()
)

print(env.get_template('basic_template.md').render({'version': 'version123', 'date': 'some-date'}))
Если я передаю несуществующий файл в PackageLoader или опускаю loader=PackageLoader() целиком, возникает ошибка.
Как же правильно этого добиться? Я не хочу, чтобы где-то лежал случайный пустой файл, если он мне не нужен. Как мне визуализировать шаблон без запуска PackageLoader моего скрипта во второй раз?

Подробнее здесь: https://stackoverflow.com/questions/792 ... 2-template
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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