如果对象是None而不是做这样的事情,如何使jijna2中的变量默认为""?
{% if p %}
{{ p.User['first_name']}}
{% else %}
NONE
{%endif %}
Run Code Online (Sandbox Code Playgroud)
因此,如果对象p为None,我想将p(first_name和last_name)的值默认为"".基本上是nvl(p.User [first_name'],"")
接收错误:错误:jinja2.exceptions.UndefinedError UndefinedError:'None'没有属性'User'
tbi*_*icr 203
使用none内置函数(http://jinja.pocoo.org/docs/templates/#none):
{% if p is not none %}
{{ p.User['first_name'] }}
{% else %}
NONE
{%endif %}
Run Code Online (Sandbox Code Playgroud)
要么
{{ p.User['first_name'] if p != None else 'NONE' }}
Run Code Online (Sandbox Code Playgroud)
或者如果你需要一个空字符串:
{{ p.User['first_name'] if p != None }}
Run Code Online (Sandbox Code Playgroud)
小智 114
{{p.User['first_name'] or 'My default string'}}
Run Code Online (Sandbox Code Playgroud)
mit*_*nka 63
根据文档你可以做:
{{ p|default('', true) }}
Run Code Online (Sandbox Code Playgroud)
导致None转换为False布尔上下文.
更新:正如lindes所提到的,它仅适用于简单的数据类型.
Iva*_*hin 24
作为其他答案的补充,如果变量是None,则可以写出其他内容,如下所示:
{{ variable or '' }}
Run Code Online (Sandbox Code Playgroud)
按照此文档,您可以这样做:
{{ p.User['first_name']|default('NONE') }}
Run Code Online (Sandbox Code Playgroud)
小智 7
有了ChainableUndefined,您就可以做到这一点。
>>> import jinja2
>>> env = jinja2.Environment(undefined=jinja2.ChainableUndefined)
>>> env.from_string("{{ foo.bar['baz'] | default('val') }}").render()
'val'
Run Code Online (Sandbox Code Playgroud)
为了避免在“ p”或“ p.User”为“无”时引发异常,可以使用:
{{ (p and p.User and p.User['first_name']) or "default_value" }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146626 次 |
| 最近记录: |