Выделение шаблона шаблона Django - программирование

Выделение шаблона шаблона Django

У меня есть трудное время, чтобы заставить механизм шаблона Django правильно отступать при расширении/включении шаблонов

эти файлы:

index.html

<html>
    <body>
        <div id="hello">
            {% block bar %}
            {% endblock %}

            {% include 'baz.html'%}
        </div>
    </body>
</html>

bar.html

{% extends 'foo.html' %}

{% block bar %}
<p>bar</p>
{% endblock %}

baz.html

<p>baz</p>

будет отображаться как

<html>
    <body>
        <div id="hello">
<p>bar</p>
<p>baz</p>
        </div>
    </body>
</html>

Как я могу его исправить, чтобы он отображался как

<html>
    <body>
        <div id="hello">
            <p>bar</p>
            <p>baz</p>
        </div>
    </body>
</html>

Вручную вводить вкладки не является вариантом. Я использую мягкие вкладки (4 пробела), если это имеет значение.

4b9b3361

Ответ 1

Отступ не вставляется автоматически с помощью наследования шаблона Django. Чтобы достичь желаемого отступов, вам нужно включить его в bar.html:

{% extends 'foo.html' %}

{% block bar %}
            <p>bar</p>
{% endblock %}

Ответ 2

Вы должны объяснить с целью ваших потребностей в отступе.

Отступ очень полезен на этапе отладки, но отступ несовместим с оптимизацией, поскольку это существует spaceless фильтр.

Вы можете написать свой собственный снимок:

@register.tag
def myinden(parser, token):
    args = token.contents.split()
    n = args[1]
    nodelist = parser.parse(('endmyinden',))
    parser.delete_first_token()
    return MyIndenNode(nodelist, n)

class MyIndenNode(Node, n):
    def __init__(self, nodelist, n):
        self.nodelist = nodelist
        self.n = n

    def render(self, context):
        import re
        regex = re.compile("^", re.M)
        return re.sub(regex, "\t"*int(self.n),
                      self.nodelist.render(context).strip())

К использованию:

index.html
{% include 'baz.html' with indentation="8" %}

baz.html
{{ myindent:myindentation }}
...

Обратите внимание, что не проверено. Кроме того, я предлагаю вам отредактировать фрагмент, чтобы работать только в режиме отладки:

Ответ 4

Еще один вариант из вышеизложенного - использовать связующее ПО Beautiful Soup.

Вот учебник. Обратите внимание, что люди называют это промежуточное программное обеспечение "" ДЕЙСТВИТЕЛЬНО МЕДЛЕННЫМ" и советы, кэширующие выходные страницы.