我将Python 3.4
+ Django 1.7.1
与Eclipse - 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有很多空格和空行,如下所示:
我尝试了{% spaceless %}
{% endspaceless %}
,但它无法正常使用。
我认为这是因为我使用缩进来提高代码的可读性。但是我想保持关于缩进的编码风格。
我该如何解决这个问题?
答案 0 :(得分:2)
我有完全相同的问题。你想拥有干净的模板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找到您想要的确切内容。它的作用基本上是:
但是使用此解决方案,您可能会遇到性能问题。