Хорошие ошибки с Jinja2? - PullRequest
       6

Хорошие ошибки с Jinja2?

0 голосов
/ 22 апреля 2020

Я использую Jinja2 для шаблонизации некоторых строк.

import jinja2

expand_data = {"project": {"name": "foo", "desc": "project-description-here"},
               "sequence": {"name": "foo-seq"}
               }

jinjaEnv = jinja2.Environment(variable_start_string='{',
                              variable_end_string='}',
                              autoescape=False,
                              undefined=jinja2.StrictUndefined)

t = jinjaEnv.from_string("{project.name}-{sequence.nam}-{project.desc}")
try:
    expanded = t.render(expand_data)
except jinja2.exceptions.UndefinedError as e:
    print(e) # 'dict object' has no attribute 'nam'

t = jinjaEnv.from_string("{project.name}-{seq.name}-{project.desc}")
try:
    expanded = t.render(expand_data)
except jinja2.exceptions.UndefinedError as e:
    print(e) # 'seq' is undefined

Вы можете видеть, что в моих строках есть ошибки шаблона, сначала у меня sequence.nam, а затем seq.name. Я хотел бы получить сообщение об ошибке от Jinja, в котором указывается, в каком элементе шаблона ("{sequence.nam}") была ошибка.

Но все, что я получаю от Jinja, это generic c "'dict У объекта нет атрибута 'nam' "- понятия не имею, какой шаблон - и в моем случае шаблоны будут намного длиннее и сложнее. Важно, чтобы мои ошибки были как можно более понятными, потому что мои пользователи, которые будут создавать шаблоны, не слишком сложны.

Кроме ручной обработки моей строки в суб-объектах шаблона и передачи каждой из них в jinja индивидуально, есть ли какие-либо конфигурации или дополнения jinja, которые я могу использовать или создать для исправления ошибок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...