36

当我们传递模板中不存在的变量时,jinja2 是否有方法引发异常?

PS:这与模板中存在变量但未传递时引发异常不同(或相反)。为此,我使用“undefined=StrictUndefined”

4

3 回答 3

42

加载 jinja2.Environment 时,将“undefined”参数设置为“jinja2.StrictUndefined”,例如:

env = jinja2.Environment(loader=<someloader>, undefined=jinja2.StrictUndefined)

您可以捕获并检查渲染异常以查看丢失的内容

编辑如果我阅读您的完整问题会有所帮助。:)

于 2012-07-03T16:47:48.280 回答
15

也许这可以帮助你 https://jinja.palletsprojects.com/en/2.11.x/api/#the-meta-api

>>> from jinja2 import Environment, meta
>>> env = Environment()
>>> ast = env.parse('{% set foo = 42 %}{{ bar + foo }}')
>>> meta.find_undeclared_variables(ast)
set(['bar'])
于 2011-05-31T03:24:21.293 回答
4

你也可以这样做:

from jinja2 import Template, StrictUndefined
Template('name: {{ name }} , city: {{ city }}',undefined=StrictUndefined).render(**{"name":"foo","city":"bar"})
于 2021-01-26T15:51:13.017 回答