2010-01-09 6 views
1

예를 들어, 장부 관리자 admin/change_list.html 템플릿의 breadcrumbs 블록을 수정하려고한다고 가정 해 봅시다. (가) "확장"때문에 태그는 원본 템플릿보다는 재정의를로드하려고, 내 재정을로드 할 때Django에서 재사용 가능한 응용 프로그램의 템플릿을 수정하는 방법은 무엇입니까?

{% extends "admin/change_list.html" %} 
{% block breadcrumbs %} ... my changes ... {% endblock %} 

다음 장고 무한 재귀로 전환 :이 같은이 템플릿을 무시하려고하면.

확실한 방법은 &을 전체 소스 템플릿을 붙여 넣는 것일 수 있지만, 이것은 피하려고하는 것입니다. 그렇다면 템플릿을 복사하여 내 프로젝트에 붙여 넣지 않고 템플릿을 수정하려면 어떻게해야합니까?

+0

이것은 http://stackoverflow.com/questions/3967801/django-overriding/and-extending-an-app-template – gotgenes

+0

@gotgenes의 복제입니다. 엄격하게 말하면서도 병합되는 것에 대해 반대 의견이 없습니다. _this_의 사본 :) –

답변

3

관리자 템플릿 덮어 쓰기에 대한 자세한 내용은 여기 http://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates입니다.

하나의 앱에 대한 템플릿 만 변경하려는 경우 단순히 app_label/change_list.html으로 저장하면됩니다. 단일 모델로 변경하려는 경우 app_label/model_as_underscores/change_list.html으로 저장할 수 있습니다.

모든 것을 변경하려는 경우 다른 이름으로 새 템플릿을 만들고 모든 ModelAdmin 하위 클래스의 이름을 change_list_template으로 설정할 수 있습니다. (ModelAdmin에, 당신은 change_form_template, delete_confirmation_templateobject_history_template과 같은 일을 할 수 있습니다. AdminSite에, 당신은 같은 방법으로 index_templatelogin_template 속성을 재정의 할 수 있습니다.)

을 두 방법 모두 당신이에서 연장 할 수 있습니다 원래 관리 템플릿

+1

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 모든 앱의 차단을 무시하고 싶었습니다. 'admin.py'의 끝에'admin.ModelAdmin.change_list_template = "admin/myproject_change_list.html"을 추가했습니다. 완전히 "깨끗하게"는 아니지만 확실히 충분히 훌륭합니다. –

관련 문제