gpt4 book ai didi

django - 如何从 Django 中的 HTML 中删除空格和空行?

转载 作者:行者123 更新时间:2023-12-02 09:28:06 24 4
gpt4 key购买 nike

我使用Python 3.4 + Django 1.7.1Eclipse - PyDev我用AcroEdit编辑 HTML。

我认为AcroEdit使用两个软空格进行缩进。

我制作了一个名为 custom_tag 的自定义模板标签在custom_tag_library.py像:

# -*- coding: utf-8 -*-
from django import template
from _ast import Num

register = template.Library()

@register.inclusion_tag('custom_tag.html')
def custom_tag(content):
return {'content': content, 'children': content.children.all()}

以及 custom_tag.html :

{% load custom_tag_library %}
<div class = 'a'>
{{ content.name }}
{% if children %}
<div class = 'b'>
{% for child in children %}
{% custom_tag child %}
{% endfor %}
</div>
{% endif %}
</div>

(如您所见,内容对象有名称和子对象)

所以,custom_tag是一个递归标签给出 <div> 中表示的树结构层次结构。

但是当我使用它时,输出的 HTML 有很多空格和空行,如下所示:

Google Chrome DOM Inspector

我试过{% spaceless %} {% endspaceless %} ,但它不起作用。

我认为出现这种情况是因为我使用缩进来提高代码的可读性。但我想保持我关于缩进的编码风格。

我该如何解决这个问题?

最佳答案

我也遇到了同样的问题。您想要拥有干净的模板 html 文件,可以轻松阅读(您得到的内容),并且同时希望在渲染时拥有人类可读的 html。

所以你不会对将 templatetag.html 文件更改为这样的解决方案感到满意,它看起来像旧的 php spaghetti :

{% load custom_tag_library %}
<div class = 'a'>{{ content.name }}
{% if children %}<div class = 'b'>
{% for child in children %}{% custom_tag child %}{% if not forloop.last %}
{% endif %}{% endfor %}
</div>{% endif %}
</div>

第二种解决方案(也是最好的解决方案)是使用中间件来读取每个 HttpResponse 并将其重写为更整洁的内容。

您可以在 PyEvolve website 上准确找到您想要的内容。它的作用基本上是:

  1. 使用 BeautifulSoup 解析 HttpResponse html
  2. 美化它(用很酷的缩进)
  3. 将其作为新的 HttpResponse 返回

但是使用此解决方案,您可能会遇到性能问题。

关于django - 如何从 Django 中的 HTML 中删除空格和空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27781379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com