독특한 홈페이지 디자인을 사용하여 웹 사이트를 구축하고 있습니다 (홈페이지는 다른 모든 페이지와 다른 헤더 및 로고 배열을 가짐). 그러나, 나는 모든 것을 상속받은 기초 템플릿을 갖고 싶다. 중복을 줄이기 위해.장고 템플릿의 고유 한 홈페이지 레이아웃이있는 웹 사이트
-base.html
-basehome.html (inherits from base.html)
-basesecond.html (inherits from base.html)
-about.html (inherits from basesecond.html)
-etc...
그래서 base.html에는 html 선언과 구조가 있습니다. Basehome.html과 basesecond.html은 다른 헤더 구조를 포함하며 사이트의 다양한 다른 페이지는 basesecond.html에서 상속받습니다.
그래서 계속 실행되는 문제는 분명히 (가장 먼) 자식 템플릿이 포함 된 본문 내용을 처리하기 위해 블록 내에 블록을 넣어야하는 것처럼 보입니다. 제가 아는 한, 장고는 당신이 이것을하도록 내버려 두지 않습니다. base.html--
<html>
<head>
<title>Mysite</title>
</head>
<body id="{% block bodyholder %}{% endblock %}">
<div id="hd">{# start of hd #}
{% block hd %}{% endblock %}
</div>{# end of the hd #}
<div id="bd">{# start of body #}
{% block bd %}{% endblock %}
</div>{# end of body #}
</body>
</html>
basehome.html--
{% extends "base.html" %}
{% block bodyholder %}bodyhome{% endblock %}
{% block hd %}
big logo and wide header
{% endblock %}
{% block bd %}
homepage body content
this part works just like I want it to.
{% endblock %}
basesecond.html--
{% extends "base.html" %}
{% block bodyholder %}bodysecond{% endblock %}
{% block hd %}
small logo and narrow header
{% endblock %}
{% block bd %}
second page body content
here is where I want to put extra blocks like
{% block unique about page sidebar %}{% endblock %}
but it breaks the template system
{% endblock %}
이 문제를 해결하는 가장 좋은 방법은 무엇입니까
?
무슨 문제입니까? 이것은 당신이 묘사하는 것과 똑같이 작동합니다. –
실제로, Django 템플릿에서 이러한 블록을 중첩하는 데 문제가 없습니다. 오류가 있습니까? –
Django 템플릿을 염두에 두어야 할 점 중 하나는 하위 템플릿에 포함 된 블록이 상위 템플릿의 블록을 덮어 쓰거나 확장 * 할 수 있다는 것입니다. 때때로, 모든 하위 템플릿에 코드를 추가하지 않아도되도록 부모 블록을 무시하기 위해 비어있는 하위 템플릿에 블록을 넣었습니다. 템플릿 시스템은 꽤 유연합니다. 난 당신이 아마 부모 템플릿에 사이드 바 블록을 넣을 수 있으며, 단지 당신의 "약"페이지에 아무런 문제없이 그것을 채울 수있을 것 같아요. – Brandon