如果我们传入模板中不存在的变量,则在 jinja 中引发异常

发布于 2024-09-28 02:07:28 字数 114 浏览 5 评论 0原文

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

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

Is there a method for jinja2 to raise an exception when we pass a variable that is not present in the template?

PS: This is different(or opposite) from raising an exception when a variable is present in the template but it is not passed. For this I use "undefined=StrictUndefined"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

软糖 2024-10-05 02:07:32

您也可以这样做:

from jinja2 import Template, StrictUndefined
Template('name: {{ name }} , city: {{ city }}',undefined=StrictUndefined).render(**{"name":"foo","city":"bar"})

You can also do that:

from jinja2 import Template, StrictUndefined
Template('name: {{ name }} , city: {{ city }}',undefined=StrictUndefined).render(**{"name":"foo","city":"bar"})
盛夏尉蓝 2024-10-05 02:07:31

也许这可以帮助你
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'])

Maybe this could help you
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'])
彼岸花似海 2024-10-05 02:07:29

当您加载 jinja2.Environment 时,将“未定义”参数设置为“jinja2.StrictUndefined”,例如:

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

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

编辑如果我阅读,这将有所帮助你的完整问题。 :)

When you load your jinja2.Environment, set the 'undefined' parameter to 'jinja2.StrictUndefined', e.g.:

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

You can catch and examine the render exception to see what was missing

EDIT It would help if I read your full question. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文