在 Jinja2 中将“无”输出抑制为字符串

新手上路,请多包涵

当值为 --- 时,如何说服 Jinja2 不打印 "None" None

我在字典中有许多条目,我想在一个循环中输出所有内容,而不是为不同的关键字设置特殊情况。如果我的值为 NoneNoneType 不是字符串),则将字符串 "None" 插入到模板渲染结果中。

尝试使用 {{ value or '' }} 来抑制它效果很好,因为它也会替换数值零。

在将字典传递给 Jinja2 进行渲染之前,我是否需要过滤字典?

原文由 Spaceghost 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 386
2 个回答

在新版本的 Jinja2 (2.9+) 中:

{{ value if value }}

在旧版本的 Jinja2(2.9 之前)中:

{{ value if value is not none }} 效果很好。

如果这引发了关于没有 else 的错误,请尝试使用 else ..

{{ value if value is not none else '' }}

原文由 Joran Beasley 发布,翻译遵循 CC BY-SA 4.0 许可协议

另一种选择是在环境中使用 finalize 挂钩:

 >>> import jinja2
>>> e = jinja2.Environment()
>>> e.from_string("{{ this }} / {{ that }}").render(this=0, that=None)
u'0 / None'

但:

 >>> def my_finalize(thing):
...     return thing if thing is not None else ''
...
>>> e = jinja2.Environment(finalize=my_finalize)
>>> e.from_string("{{ this }} / {{ that }}").render(this=0, that=None)
u'0 / '

原文由 SingleNegationElimination 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题