Ответ 1
Отступ не вставляется автоматически с помощью наследования шаблона Django. Чтобы достичь желаемого отступов, вам нужно включить его в bar.html
:
{% extends 'foo.html' %}
{% block bar %}
<p>bar</p>
{% endblock %}
У меня есть трудное время, чтобы заставить механизм шаблона 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 пробела), если это имеет значение.
Отступ не вставляется автоматически с помощью наследования шаблона Django. Чтобы достичь желаемого отступов, вам нужно включить его в bar.html
:
{% extends 'foo.html' %}
{% block bar %}
<p>bar</p>
{% endblock %}
Вы должны объяснить с целью ваших потребностей в отступе.
Отступ очень полезен на этапе отладки, но отступ несовместим с оптимизацией, поскольку это существует 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 }}
...
Обратите внимание, что не проверено. Кроме того, я предлагаю вам отредактировать фрагмент, чтобы работать только в режиме отладки:
Вы можете переопределить метод визуализации NodeList, как я уже сделал. См. Мой вопрос с рабочим кодом:
Правильный отступ в шаблонах Django (без патчей для обезьян)?
Еще один вариант из вышеизложенного - использовать связующее ПО Beautiful Soup.
Вот учебник. Обратите внимание, что люди называют это промежуточное программное обеспечение "" ДЕЙСТВИТЕЛЬНО МЕДЛЕННЫМ" и советы, кэширующие выходные страницы.