Django 관리 템플릿을 동시에 재정의 및 확장
Django의 관리 템플릿을 재정의하는 것은 관리 인터페이스를 사용자 정의하기 위한 일반적인 요구 사항입니다. 그러나 AppDirectories 템플릿 로더를 활용하면서 템플릿을 재정의하고 확장하려는 경우 딜레마에 직면할 수 있습니다.
재정의와 확장
Django에서 , 템플릿을 재정의하면 기존 템플릿 파일을 완전히 바꾸는 반면, 확장을 사용하면 템플릿 내의 특정 블록에 콘텐츠를 추가할 수 있습니다.
AppDirectories 템플릿 로더의 과제
AppDirectories 템플릿 로더는 관리 템플릿을 재정의하고 확장할 때 문제를 제시합니다. 이 로더를 사용할 때 Django는 확장 템플릿이 원본 템플릿과 동일한 디렉터리에 있을 것으로 예상합니다. 관리 템플릿이 다른 애플리케이션에 있는 경우 문제가 될 수 있습니다.
기존 솔루션
사용자 정의 템플릿 로더:
권장되는 솔루션은 앱 디렉토리 전반에 걸쳐 템플릿 확장을 지원하는 사용자 정의 템플릿 로더를 사용하는 것입니다. 그러한 로더 중 하나는 DjangoSnippets.org에서 사용할 수 있습니다.
Django의 템플릿 로더 사용자 정의:
또 다른 옵션은 특정 앱에서 템플릿을 확장할 수 있도록 Django의 AppDirectories 템플릿 로더를 사용자 정의하는 것입니다. 여기에는 AppDirectories 로더에서 상속되는 사용자 정의 템플릿 로더 클래스를 생성하고 해당 동작을 수정하는 작업이 포함됩니다.
Django의 향후 계획
이 글을 쓰는 시점에서 Django는 기본적으로 지원하지 않습니다. 앱 디렉토리 전반에 걸쳐 템플릿을 확장합니다. 그러나 GitHub에는 이 기능을 제안하는 공개 문제가 있습니다. 구현하면 Django 관리 템플릿을 재정의하고 확장하는 프로세스가 크게 단순화됩니다.
사용자 정의 로더를 사용한 사용 예:
위에 언급된 사용자 정의 템플릿 로더를 사용하면 템플릿에 다음을 구현할 수 있습니다.
{% extends "admin:admin/index.html" %} {% block sidebar %} {{block.super}} <div> <h1>Extra links</h1> <a href="/admin/extra/">My extra link</a> </div> {% endblock %}
이 코드는 추가 사이드바 콘텐츠로 관리 색인 템플릿을 확장하여 원본 템플릿을 효과적으로 재정의하고 확장합니다.
위 내용은 AppDirectories 템플릿 로더를 사용하여 Django 관리 템플릿을 재정의하고 확장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!