2010-03-13 3 views
4

여러 곳에서 확장하고 싶은 장고 템플릿이 있습니다. 일부에서는 div가 양식 안에 있어야하고 다른 div에서는 그렇지 않아야합니다. 이렇게하려면 div 위와 아래에 블록을 추가하여 각각 추가 할 수 있습니다.장고에 블록을 넣기

이 원하는 :

<form> 
<div class="my_div"> 
    {% block div_content %} 
    ... 
    {% endblock %} 
</div> 
</form> 

템플릿 :

{% block div_top %}{% endblock %} 
<div class="my_div"> 
    {% block div_content %} 
    {% endblock %} 
</div> 
{% block div_bottom %}{% endblock %} 

내가 도움이되지만 그것을 할 수있는 더 좋은 방법이 있다는 것을 생각할 수 없다이를보고. 표준 Django에서이 작업을 수행하는 방법은 무엇입니까?

답변

8

여러 개의 기본 템플릿을 사용하면 몇 팀에서 사용하는 것으로 나타났습니다. 예를 들어 "base_with_form.html"이라는 기본 템플릿을 추가하기 만하면됩니다. 양식이 필요한 템플리트는이 기본 템플리트를 확장합니다.

나를 도왔던 한 가지 점은 파이썬 패키지와 비슷한 방식으로 템플릿 디렉토리를 배치하는 것을 생각하는 것입니다. 일반적으로 디렉토리 당 기본 .html (ala init .py)을 포함합니다. 다만 자리 표시자인 경우에도 마찬가지입니다. 모든 기본 파일은 상위 디렉토리의 기본 파일을 확장합니다. 같은 디렉터리에있는 여러 템플릿의 스타일을 추가로 특수화하려면 원하는 변경 사항이있는 로컬 base.html의 복사본을 추가해야합니다.

예 :

templates/ 
    base.html 
    index.html (extends "base.html") 
    accounts/ 
    base.html (extends "base.html") 
    affiliate_base.html (extends "base.html") 
    my_account.html (extends "accounts/base.html") 
    affiliate_dashboard.html (extends "accounts/affiliate_base.html") 
    vips/ 
     base.html (extend "accounts/base.html") 
     vip_lounge.html (extends "accounts/vips/base.html")