【问题标题】:Is there a way to strip whitespace around a template tag?有没有办法去除模板标签周围的空白?
【发布时间】:2015-07-02 10:40:54
【问题描述】:

我有一个纯文本电子邮件模板:

Here's some info.

{% if variable %}
Additional info.
{% else %}
Alternative info.
{% endif %}

{% if another_variable %}
IMPORTANT MESSAGE
{% endif %}

Final thoughts.

不幸的是,由于这是一个纯文本模板,而不是 HTML,每个模板标签之后出现的换行符都包含在输出中。所以如果variable == Trueanother_variable == False,输出是这样的:

Here's some info.


Additional info.



Final thoughts.

所有内容之间都有大量额外的空行,我希望只有一个。

有什么办法可以在不将所有标签混合在一起的情况下解决这个问题(这使得模板难以阅读)?

【问题讨论】:

  • 这里不是很有帮助,但添加一点,因为这是一个长期且持续的问题。要开始阅读有this google groups thread。然后是this ticket,尤其是奥古斯汀的评论很重要。在 1.8 中,可以使用对替代模板引擎(甚至在单个项目中的多个)的官方支持,因此如果您的项目已经在 1.8 中,那么电子邮件模板的 Jinja2 可能是最佳选择。如果不是,则必须解决此问题。 :)

标签: django django-templates


【解决方案1】:

试试这个:

import re
regex = re.compile(r'\n+')
regex.sub('\n', template)

这会将连续的换行符替换为单个换行符。

【讨论】:

  • 嗯,我没有考虑将后处理作为解决此问题的潜在解决方案。我试试看!
  • 使用正则表达式进行后处理非常有用!非常感谢您的建议!
【解决方案2】:

您可以自定义您的。请参阅here 以获得一些指导。

【讨论】:

  • 我不需要自定义模板标签。我需要一种方法来防止带有内置标签的行将换行符打印到我的纯文本输出中。
  • 我在我的项目中尝试了你的代码,但是我在一行中得到了输出,我错过了什么吗?还是你?
猜你喜欢
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 2021-10-15
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多