Jinja2中如何获取Python的None而非字符串"None"?
解决Jinja2模板中变量不存在时输出Python None而非字符串"None"的问题
当你使用{"value": "{{ example.value }}"}渲染模板时,若example.value不存在,Jinja2会默认输出字符串"None"。要得到Python的None(无引号形式),可以用以下几种方法:
使用
default过滤器指定默认值为none
Jinja2中的none对应Python的None,直接使用default(none)过滤器,会在变量不存在时返回None而非字符串。修改后的模板代码:{"value": {{ example.value|default(none) }}}注意要去掉变量外层的双引号,否则即使返回
None也会被包裹成字符串"None"。通过条件判断显式处理
用is defined检查变量是否存在,存在则输出变量值,否则直接输出None:{"value": {% if example.value is defined %}{{ example.value }}{% else %}None{% endif %} }若需输出JSON格式的
null(可选)
如果你实际需要的是JSON规范中的null(和PythonNone语义等价),可以结合tojson过滤器,确保输出符合JSON格式:{"value": {{ example.value|default(none)|tojson }}}
内容的提问来源于stack exchange,提问作者Альберт Александров
相关产品推荐
相关产品推荐

