0

如何使生成的 HTML 在 whitespce 方面更干净?Django Templating 似乎对此很草率。例如,它识别的标签,如 IF 或 FOR 被解析然后替换为空行。另一个例子是当我包含一个包含 N 个 HTML 代码链接的文件时。如果 include 语句是选项卡,则包含文件中的第一个链接会适当缩进,其余的会被拉到左边。

等等。

{% spaceless %}似乎什么也没做。

是否有关于如何处理空白的设置?还是另一种解决方案?

谢谢你。

4

3 回答 3

2

我在寻找同一个问题的答案时发现了这一点,似乎没有使用 Django 语法(我已经找到但我可能忽略了一些东西)的简洁明了的方法来做到这一点,所以在那张纸条上我d 推荐 Jinja2。我有使用 SaltStack 去除空格的经验。一种方法是更改{% this %}​​它{% this -%}导致不附加换行符,因此如果您有一行仅包含{% this -%}那么它将不会在生成的 html 中显示为任何内容。

于 2013-10-21T03:16:42.013 回答
1

您可以像我所做的那样覆盖 NodeList 的渲染方法。使用工作代码查看我的问题(仅适用于块并包含标签):

Django模板中的正确缩进(没有猴子补丁)?

于 2013-08-19T09:42:51.447 回答
0

Django 的问题跟踪器中有一张关于更好地处理空白的票。它于 2014 年以 wontfix 的形式关闭,并附有以下评论

据我所知,核心团队的共识是:

  • Django 模板语言足以生成对空格不敏感的 HTML;
  • 长期计划是用更好的引擎(很可能是 Jinja)替换它,而不是继续研究它;
  • 如果您有更专业的需求(想要生成 RTF?)只需使用另一个模板引擎,有几个可供选择。

对于 HTML 输出,我个人对凌乱的空白很满意。如果响应被压缩,它将对 HTTP 响应大小的影响最小。

我不得不处理一些精确的空格和换行符控制重要的情况(例如,我有一个 Telegram 消息模板,每个换行符都是最终消息中的换行符)。为了整理模板,我最终编写了几个自定义标签:{% linemode %}{% line %}.

示例模板:

{% linemode %}
    {% line %}Line one.{% endline %}
    This content will be ignored.
    {% if True %}
        {% line %}Line two.{% endline %}
    {% endif %}
{% endlinemode %}

结果:

Line one.
Line two.

这里的想法是,该{% linemode %}块将丢弃未包含在{% line %}标签中的所有内容。这样, the{% if ... %}和其他位就不会添加不需要的空格或换行符。来源在这里

于 2021-12-10T14:49:34.827 回答