如果变量不存在,Python docx模板跳过标记



我正在学习docxtpl,如果变量不存在,我找不到不在if或if/else中显示行的方法。考虑以下地址2是可选的:

{{ name }}
{{ address1 }}
{{ address2 }}
{{ city }} {{ state }} {{ zip }}

具有以下上下文:

{
'name': "Joe Bob",
'address1': "123 Apple Way",
'city': 'Pleasant',
'state': 'CA',
'zip': '94566'
}

我希望它能呈现出这样的效果:

Joe Bob
123 Apple Way
Pleasant CA 94566

但相反,它呈现出:

Joe Bob
123 Apple Way
Pleasant CA 94566

我尝试过用if/else进行一些合并,并使用类似的{%-,但没有成功。我读到任何用{%-进行的合并都需要在自己的行上有标签。

{{ name }}
{{ address1 }}
{% if address2 %}{{ address2 }}
{% else %}
{{ no_defined_variable }}{% endif %}
{{ city }} {{ state }} {{ zip }}

我能想到的唯一选择是把它放进一个循环中,但我认为还会有更多我做不到的情况出现。

我终于明白了:

{{ name }}
{{ address1 }}
{%p if address2 %}
{{ address2 }}
{%p endif %}
{{ city }} {{ state }} {{ zip }}

主要需要注意的是,{%p必须完全在一条新的线上。

除了发短信,我还没有弄清楚。例如,一个包含a和B部分、a或B部分的文档可以显示,或者a和B一起显示。围绕整个部分的if语句确实阻止了它的呈现,但我的模板将它们都放在一个新页面上,所以我在文档中间得到了一个空白页面。

最新更新