tam*_*are 9 django django-templates
来自Django文档,
通常,如果变量不存在,模板系统会插入TEMPLATE_STRING_IF_INVALID设置的值,默认设置为''(空字符串).
仅当TEMPLATE_STRING_IF_INVALID设置为''(空字符串)时,才会应用应用于无效变量的过滤器.如果TEMPLATE_STRING_IF_INVALID设置为任何其他值,则将忽略变量过滤器.
对于if,for和regroup模板标记,此行为略有不同.如果为其中一个模板标记提供了无效变量,则该变量将被解释为None.过滤器始终应用于这些模板标记中的无效变量.
如果无效变量总是被转换为'',对于if,for和重新组合以外的模板标签和过滤器,那么模板过滤器default_if_none有什么用呢?过时了吗?
Wog*_*gan 13
无效变量与存在但具有值的变量之间存在差异None
.
考虑以下背景:
{'apple':'green','banana':None}`
Run Code Online (Sandbox Code Playgroud)
在您的模板{{ apple }}
解析为green
,{{ banana }}
解析为None
,并{{ orange }}
解析为TEMPLATE_STRING_IF_INVALID
.
现在考虑一下{{ banana|default_if_none:'yellow' }}
,您应该看到default_if_none
标签的使用.
default_if_none
这是我用过几次的案例。我正在查询一个我无法控制的辅助数据库,并且在模板中显示数据。大多数时候,数据看起来不错,但有时,数据值会显示None
。在这种情况下,我将使用过滤器:
{{ data_value|default_if_none:"N/A" }}
Run Code Online (Sandbox Code Playgroud)
普通公众和网站用户通常不理解该None
值的含义,通过用更友好的单词替换它,过滤器default_if_none
就派上用场了。
归档时间: |
|
查看次数: |
9055 次 |
最近记录: |