如何从 Django 中的 HTML 中删除空格和空行?
How to remove spaces and empty lines from HTML in Django?
我使用 Python 3.4
+ Django 1.7.1
和 Eclipse - PyDev
并且我使用 AcroEdit
编辑 HTML.
我认为AcroEdit
使用两个软空格来缩进。
我在 custom_tag_library.py
中创建了一个名为 custom_tag
的自定义模板标签,例如:
# -*- 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 有很多空格和空行,如下所示:
我试过{% spaceless %}
{% endspaceless %}
,但是没用。
我认为这是因为我使用缩进来提高代码的可读性。但是我想保持关于缩进的编码风格。
我该如何解决这个问题?
我遇到了完全相同的问题。你想要干净的模板 html 文件,你可以轻松阅读(你得到的),同时你希望在呈现它时具有人类可读的 html。
所以您不会满意将 templatetag.html 文件更改为类似旧 php 意大利面条的解决方案:
{% 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 上找到您想要的内容。它的作用基本上是:
- 用 BeautifulSoup
解析你的 HttpResponse html
- 美化它(用很酷的缩进)
- Return 它作为新的 HttpResponse
但是使用此解决方案,您可能会遇到性能问题。
我使用 Python 3.4
+ Django 1.7.1
和 Eclipse - PyDev
并且我使用 AcroEdit
编辑 HTML.
我认为AcroEdit
使用两个软空格来缩进。
我在 custom_tag_library.py
中创建了一个名为 custom_tag
的自定义模板标签,例如:
# -*- 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 有很多空格和空行,如下所示:
我试过{% spaceless %}
{% endspaceless %}
,但是没用。
我认为这是因为我使用缩进来提高代码的可读性。但是我想保持关于缩进的编码风格。
我该如何解决这个问题?
我遇到了完全相同的问题。你想要干净的模板 html 文件,你可以轻松阅读(你得到的),同时你希望在呈现它时具有人类可读的 html。
所以您不会满意将 templatetag.html 文件更改为类似旧 php 意大利面条的解决方案:
{% 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 上找到您想要的内容。它的作用基本上是:
- 用 BeautifulSoup 解析你的 HttpResponse html
- 美化它(用很酷的缩进)
- Return 它作为新的 HttpResponse
但是使用此解决方案,您可能会遇到性能问题。