default_if_none 在 Django 模板中有啥用吗?
Posted
技术标签:
【中文标题】default_if_none 在 Django 模板中有啥用吗?【英文标题】:Does default_if_none have any use in Django templates?default_if_none 在 Django 模板中有什么用吗? 【发布时间】:2011-08-23 17:42:53 【问题描述】:来自 Django 文档,
一般来说,如果一个变量没有 存在,模板系统插入 的价值 TEMPLATE_STRING_IF_INVALID 设置, 设置为 '' (空字符串) 默认情况下。
应用于无效的过滤器 变量将仅在以下情况下应用 TEMPLATE_STRING_IF_INVALID 设置为 ''(空字符串)。如果 TEMPLATE_STRING_IF_INVALID 设置为 任何其他值,变量过滤器将 被忽略。
这种行为略有不同 对于 if、for 和 regroup 模板 标签。如果一个无效的变量是 提供给这些模板之一 标签,变量将被解释 作为无。过滤器始终应用于 这些中的无效变量 模板标签。
如果一个无效的变量总是被翻译成'',对于除了 if、for 和 regroup 之外的模板标签和过滤器,那么模板过滤器 default_if_none 好用吗?过时了吗?
【问题讨论】:
【参考方案1】:无效变量与存在但值为None
的变量之间存在差异。
考虑以下上下文:
'apple':'green','banana':None`
在您的模板中, apple
解析为 green
,而 banana
解析为 None
, orange
解析为 TEMPLATE_STRING_IF_INVALID
。
现在考虑 banana|default_if_none:'yellow'
,您应该会看到default_if_none
标签的使用。
【讨论】:
【参考方案2】:这是我多次使用default_if_none
的案例。我正在查询一个我无法控制的辅助数据库,并且我正在模板中显示数据。大多数时候数据看起来不错,但有时数据值会显示None
。在这种情况下,我会将过滤器用作:
data_value|default_if_none:"N/A"
一般公众和网站用户通常不会理解None
值的含义,通过将其替换为更友好的词,过滤器default_if_none
就派上用场了。
【讨论】:
当你想加入多个过滤器时要小心。例如:value|upper|default_if_none:"-"
不行,你应该把:value|default_if_none:"-"|upper
以上是关于default_if_none 在 Django 模板中有啥用吗?的主要内容,如果未能解决你的问题,请参考以下文章