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