som*_*ier 9 python attributes jinja2
使用常规python,我可以得到getattr(object, att)但是在Jinja2中,我得到:
jinja2.exceptions.UndefinedError
jinja2.exceptions.UndefinedError: 'getattr' is undefined
Run Code Online (Sandbox Code Playgroud)
我怎么用呢?
Mar*_*ers 17
Jinja2 不是Python.它使用类似Python的语法,但没有定义相同的内置函数.
请改用订阅语法; 您可以在Jinja2中交替使用属性和订阅访问:
{{ object[att] }}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用attr()过滤器:
{{ object|attr(att) }}
Run Code Online (Sandbox Code Playgroud)
从模板设计器文档的Variables部分:
.除了标准的Python__getitem__"下标"语法([])之外,您还可以使用dot()来访问变量的属性.以下几行做同样的事情:
Run Code Online (Sandbox Code Playgroud){{ foo.bar }} {{ foo['bar'] }}
并在同一部分中进一步说明实施细节:
foo['bar']工作方式大致相同,顺序差异很小:
- 检查项目
'bar'中FOO.(foo.__getitem__('bar'))- 如果没有,请检查foo上名为bar的属性.()
getattr(foo, 'bar')- 如果没有,则返回一个未定义的对象.