Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python `Jinja2中的DebugUndefined`忽略缺失的可忽略变量_Python_Jinja2 - Fatal编程技术网

Python `Jinja2中的DebugUndefined`忽略缺失的可忽略变量

Python `Jinja2中的DebugUndefined`忽略缺失的可忽略变量,python,jinja2,Python,Jinja2,我需要捕获模板中所有未定义的变量。为此,我使用find_undeclared_variables函数。问题是,它忽略了缺失的可移植性。请参见以下示例: 进口金玉2 从jinja2.meta导入查找未声明的变量 env=jinja2.Environmentundefined=jinja2.DebugUndefined template=env.from_字符串“{%for x in y%}{{{x}}{%endfor%}-{{a},{b}” rendered=template.render ast

我需要捕获模板中所有未定义的变量。为此,我使用find_undeclared_variables函数。问题是,它忽略了缺失的可移植性。请参见以下示例:

进口金玉2 从jinja2.meta导入查找未声明的变量 env=jinja2.Environmentundefined=jinja2.DebugUndefined template=env.from_字符串“{%for x in y%}{{{x}}{%endfor%}-{{a},{b}” rendered=template.render ast=env.parserendered 未定义=查找未声明的变量 打印未定义:,未定义 未定义的变量将只包含a和b-未报告变量y。当我将jinja2.Environment的undefined参数更改为StrictUndefined时,由于y未定义,代码崩溃:

进口金玉2 从jinja2.meta导入查找未声明的变量
env=jinja2.Environmentundefined=jinja2.StrictUndefined为什么不将iterable捕获为未声明-默认情况下,jinja2不会将未定义的迭代视为问题,并将此迭代解释为空序列上的迭代。许多项目都依赖于该功能。您可以在Jinja文档中找到更多信息:。是否应该使用StrictUndefined忽略它?是否应该使用StrictUndefined忽略它?-文档明确指出,StrictUndefined不允许对未定义的进行迭代:。也就是说,使用StrictUndefined更改默认的Jinja语义,表示允许对未定义对象执行的操作