Я использую 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, которые я могу использовать или создать для исправления ошибок?