2011-05-03 2 views
2

독특한 홈페이지 디자인을 사용하여 웹 사이트를 구축하고 있습니다 (홈페이지는 다른 모든 페이지와 다른 헤더 및 로고 배열을 가짐). 그러나, 나는 모든 것을 상속받은 기초 템플릿을 갖고 싶다. 중복을 줄이기 위해.장고 템플릿의 고유 한 홈페이지 레이아웃이있는 웹 사이트

-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 %} 

이 문제를 해결하는 가장 좋은 방법은 무엇입니까

?

+0

무슨 문제입니까? 이것은 당신이 묘사하는 것과 똑같이 작동합니다. –

+1

실제로, Django 템플릿에서 이러한 블록을 중첩하는 데 문제가 없습니다. 오류가 있습니까? –

+0

Django 템플릿을 염두에 두어야 할 점 중 하나는 하위 템플릿에 포함 된 블록이 상위 템플릿의 블록을 덮어 쓰거나 확장 * 할 수 있다는 것입니다. 때때로, 모든 하위 템플릿에 코드를 추가하지 않아도되도록 부모 블록을 무시하기 위해 비어있는 하위 템플릿에 블록을 넣었습니다. 템플릿 시스템은 꽤 유연합니다. 난 당신이 아마 부모 템플릿에 사이드 바 블록을 넣을 수 있으며, 단지 당신의 "약"페이지에 아무런 문제없이 그것을 채울 수있을 것 같아요. – Brandon

답변

4

당신이 작은 부분을 다시 작성할 필요가 정확히 무엇을 보여 주었다 사용하는 경우 :이

{% block unique about page sidebar %}{% endblock %} 

대신

을 그렇지 않으면이

{% block unique %}{% endblock %} 
{% block about %}{% endblock %} 
{% block page %}{% endblock %} 
{% block sidebar %}{% endblock %} 

로 교체 모든 것이 제대로 작동해야합니다. 기대하지 않는 오류 코드 또는 동작은 무엇입니까?