You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除Django中{% if %}标签产生的多余换行

解决Django纯文本邮件模板多余换行问题

首先明确:spaceless标签只对HTML内容生效,它会移除HTML标签之间的空格,但纯文本模板里的换行、空白完全不在它的处理范围内,所以你用了也没用。

要解决if条件不成立时的多余换行,直接用Django模板的空白控制语法就行——在标签的开头和结尾加-,吃掉标签前后的空白和换行:

修改后的email_template.txt模板如下:

Some random string
Some other string

-----------------------------------------

{%- if 'firstname' in data -%}firstname: {{data['firstname']}}{%- endif -%}
{%- if 'lastname' in data -%}lastname: {{data['lastname']}}{%- endif -%}
{%- if 'dob' in data -%}dob: {{data['dob']}}{%- endif -%}
{%- if 'route' in data -%}route: {{data['route']}}{%- endif -%}
{%- if 'mobile' in data -%}mobile: {{data['mobile']}}{%- endif -%}
{%- if 'mail' in data -%}mail: {{data['mail']}}{%- endif -%}

原理说明

{%- ... -%}里的减号会自动移除标签前后的所有空白字符(包括换行、空格、制表符)。当if条件不成立时,整个标签块会被完全移除,连原本标签所在行的换行也不会留下,自然就不会产生多余空行。

如果不想全局处理,也可以只在标签的一侧加-,比如{% if ... -%}只吃掉标签开头的空白,{%- endif %}只吃掉标签结尾的空白,根据你的排版需求调整即可。

内容的提问来源于stack exchange,提问作者Anonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:11:04