---
title: "템플릿 재정의 방법"
version: 6.0
locale: ko
source: https://docs.djangoproject.com/ko/6.0/howto/overriding-templates/
canonical: https://djangodocs.dev/ko/6.0/howto/overriding-templates/
---
# 템플릿 재정의 방법

프로젝트에서 타사 애플리케이션이든 django.contrib.admin”과 같은 기여 애플리케이션이든 다른 Django 애플리케이션의 템플릿을 재정의하는 것이 좋습니다. 프로젝트의 템플릿 디렉토리 또는 응용프로그램의 템플리트 디렉토리에 템플리트 재정의를 넣을 수 있습니다.

앱 및 프로젝트 템플릿 디렉터리에 모두 재정의가 포함된 경우 기본 Django 템플릿 로더가 먼저 프로젝트 수준 디렉터리에서 템플릿을 로드하려고 시도합니다. 즉, :설정:’입니다.DIRS’가 다음 설정 전에 검색됩니다.’APP\_DIRS’입니다.

> **See also**
>
> ref:를 읽습니다.그렇게 하려면 붙박이장 같은 것도 있어야죠.

## 프로젝트의 템플릿 디렉터리에서 재정의합니다.

먼저 프로젝트의 템플릿 디렉터리에 교체 템플릿을 생성하여 템플릿을 재정의하는 방법에 대해 알아봅니다.

당신이 blog/post.html”과 “blog/list.html”을 제공하는 “blog”라는 제3자 애플리케이션의 템플릿을 재정의하려고 한다고 가정해 보겠습니다. 프로젝트의 관련 설정은 다음과 같습니다.

```
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

INSTALLED_APPS = [
    ...,
    "blog",
    ...,
]

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [BASE_DIR / "templates"],
        "APP_DIRS": True,
        # ...
    },
]
```

:설정:입니다.기본 프로젝트 템플릿을 사용하여 프로젝트를 생성했다면 템플릿 설정과 BASE\_DIR”이 이미 존재하게 됩니다. 수정해야 할 설정은 : setting:’입니다.DIRS입니다.

이러한 설정은 프로젝트의 루트에 “템플릿” 디렉토리를 가지고 있다고 가정합니다. “블로그” 앱의 템플릿을 재정의하려면 “템플릿” 디렉터리에 폴더를 생성한 다음 템플릿 파일을 해당 폴더에 추가하십시오.

```
templates/
    blog/
        list.html
        post.html
```

템플릿 로더는 먼저 “DIRS” 디렉토리에서 템플릿을 찾습니다. “blog” 앱의 뷰가 “blog/post.html”과 “blog/list.html” 템플릿을 요청하면 로더는 방금 만든 파일을 반환합니다.

## 앱의 템플릿 디렉토리에서 재정의합니다.

프로젝트의 앱 외부에 위치한 템플릿을 재정의하기 때문에 프로젝트의 템플릿 폴더에 템플릿 재정의를 넣고 첫 번째 방법을 사용하는 것이 더 일반적입니다. 그러나 원하는 경우 앱의 템플릿 디렉터리에 재정의를 넣을 수도 있습니다.

먼저 템플릿 설정이 앱 디렉터리 내에서 확인 중인지 확인합니다.

```
TEMPLATES = [
    {
        # ...
        "APP_DIRS": True,
        # ...
    },
]
```

“myapp”이라는 앱에 템플릿 재정의를 넣고 재정의할 템플릿 이름을 “blog/list.html”과 “blog/post.html”로 지정하면 디렉터리 구조는 다음과 같습니다.

```
myapp/
    templates/
        blog/
            list.html
            post.html
```

설정:을(설정):APP\_DIRS가 “참”으로 설정되면 템플릿 로더가 앱의 템플릿 디렉토리를 검색하여 템플릿을 찾습니다.

## 재정의된 템플릿을 확장합니다.

템플릿 로더를 구성한 경우 :ttag:’{% extenses %}’ 템플릿 태그를 사용하여 템플릿을 확장하는 동시에 재정의할 수 있습니다. 이렇게 하면 전체 템플릿을 다시 구현할 필요 없이 소규모 사용자 지정을 수행할 수 있습니다.

예를 들어 이 기술을 사용하여 ‘’admin/base\_site.html’ 템플릿에 사용자 정의 로고를 추가할 수 있습니다.

*`templates/admin/base_site.html`*

```html+django
 {% extends "admin/base_site.html" %}

 {% block branding %}
   <img src="link/to/logo.png" alt="logo">
   {{ block.super }}
 {% endblock %}
```

주요 내용은 다음과 같습니다.

- 이 예에서는 구성된 프로젝트 수준의 템플릿” 디렉토리를 사용하여 admin/base\_site.html”을 재정의하는 “templates/admin/base\_site.html”에 파일을 생성합니다.
- 새 템플릿은 “admin/base\_site.html”을 확장하며, 이는 재정의되는 템플릿과 동일합니다.
- 템플릿은 단지 “브랜드” 블록을 대체하고 맞춤형 로고를 추가하고 “블록”을 사용합니다.이전 내용을 보존할 수 있습니다.
- 템플릿의 나머지 부분은\`\`admin/base\_site.html\`\`.에서 변경되지 않은 상태로 상속됩니다.

이 기술은 템플릿 로더가 확장” 태그를 결정할 때 이미 로드된 오버라이드 템플릿(“templates/admin/base\_site.html”)을 고려하지 않기 때문에 작동합니다. “블록”과 결합합니다.Superdown은 작은 커스터마이징을 만드는 강력한 기술입니다.
