2012-10-15 2 views
3

모든 템플릿을 변경하기 전에 이것을 올바르게 이해했는지 확인하고 싶습니다. 내 전체 레이아웃 base.html 있습니다. 이것에는 {% block content %}이 있습니다. 각 콘텐츠 페이지는 "base.html"을 확장하고 블록 태그로 둘러 쌓여 있습니다. 이것은 잘 작동합니다. 내보기는 렌더링 된 콘텐츠 페이지를 반환하며 레이아웃에 멋지게 배치됩니다.Django 템플릿 : 동일한베이스에 다중 블록 태그 사용

이제 menubar.html에서 메뉴 모음을 만들었습니다. 메뉴는 선택한 페이지/내용의 색상이 다른 점을 제외하면 모든 페이지에서 동일해야합니다. 그래서 어떤 내용이로드되었는지 알아야합니다.

내 base.html는 이제 내가 내 콘텐츠의 모든 템플릿을 열고 그들에게 다음과 같은 추가하려고 오전 {% 블록 메뉴 바 %}

있습니다에,

{% include "menubar.html" %} 

다음을 menubar.html, 블록 태그로 메뉴를 둘러 쌉니다. 그 맞습니까? 블록 시스템의 요점은 모든 템플릿을 변경하지 않고 어떻게 든 base.html에서 제어 할 수 있다고 생각했습니다.

답변

1

나는 단지 {% include "menubar.html" %}을 base.html에 넣는 것이 좋습니다.

이 같은 메뉴 사용 무언가에 현재 페이지를 선택하려면 : https://stackoverflow.com/a/477719/473285

+0

지금보고 있습니다. context_instance = RequestContext (request)를 사용하여 {{request.path}}를 보여줄 수도 있습니다. 그 질문을 게시 할 것입니다. – user984003

+0

위대한 작품. 나는 참조 된 기사 http://110j.wordpress.com/2009/01/25/django-template-tag-for-active-class/와 그 기사를 참조했다. 이름 지정 매개 변수에 이름 = "home_url_name"을 지정해야 작동 할 수 있습니다. – user984003

2

콘텐츠 템플릿 base.html에서 확장하고 {% block menubar %} 당신이 모든 내용 템플릿을 수정할 필요가 없습니다 {% block content %} 벗어나면 , 그냥 base.html

+0

그러나 메뉴가 어떻게로드됩니까? 렌더링 된 콘텐츠 페이지를 반환합니다. 이것은 base.html을 확장합니다. 그러나베이스는 메뉴 태그 안에 무엇을 넣을 지 어떻게 알 수 있습니까? – user984003

+0

'{% block menubar %}'안에'{% include "menubar.html"%} "를 넣으므로, 템플릿 시스템은 menubar.html 파일 안에있는 그 블럭 안에 넣을 것입니다. 따라서 메뉴를 렌더링하기 위해 컨텍스트 정보가 필요한 경우, 예를 들어 컨텍스트 내의 render_to_template 함수에 컨텍스트 정보를 전달하면됩니다. – esauro

+0

그러면 블록이 필요하지 않습니다. 그냥 include를 사용하십시오. 내 문제는 다음 컨텍스트 정보를 전달하는 것입니다. 아래 답변을 살펴보면 감사합니다! – user984003

관련 문제