{"title":"How to override templates","version":"4.0","locale":"ko","docname":"howto/overriding-templates","url":"/ko/4.0/howto/overriding-templates/","canonical":"https://djangodocs.dev/ko/4.0/howto/overriding-templates/","summary":"프로젝트에서 타사 애플리케이션이든 `` django.contrib.admin”과 같은 기여 애플리케이션이든 다른 Django 애플리케이션의 템플릿을 재정의하는 것이 좋습니다. 프로젝트의 템플릿 디렉토리 또는 응용프로그램의 템플리트 디렉토리에 템플리트 재정의를 넣을 수 있습니다. 앱 및 프로젝트…","html":"<h1>How to override templates<a class=\"heading-anchor\" href=\"#how-to-override-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>프로젝트에서 타사 애플리케이션이든 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>django.contrib.admin”과 같은 기여 애플리케이션이든 다른 Django 애플리케이션의 템플릿을 재정의하는 것이 좋습니다. 프로젝트의 템플릿 디렉토리 또는 응용프로그램의 템플리트 디렉토리에 템플리트 재정의를 넣을 수 있습니다.</p>\n<p>앱 및 프로젝트 템플릿 디렉터리에 모두 재정의가 포함된 경우 기본 Django 템플릿 로더가 먼저 프로젝트 수준 디렉터리에서 템플릿을 로드하려고 시도합니다. 즉, :설정:’입니다.DIRS’가 다음 설정 전에 검색됩니다.’APP_DIRS’입니다.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">더 보기</p>\n<p>ref:를 읽습니다.그렇게 하려면 붙박이장 같은 것도 있어야죠.</p>\n</aside>\n<section id=\"overriding-from-the-project-s-templates-directory\">\n<h2>프로젝트의 템플릿 디렉터리에서 재정의합니다.<a class=\"heading-anchor\" href=\"#overriding-from-the-project-s-templates-directory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>먼저 프로젝트의 템플릿 디렉터리에 교체 템플릿을 생성하여 템플릿을 재정의하는 방법에 대해 알아봅니다.</p>\n<p>당신이 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>blog/post.html”과 “blog/list.html”을 제공하는 “blog”라는 제3자 애플리케이션의 템플릿을 재정의하려고 한다고 가정해 보겠습니다. 프로젝트의 관련 설정은 다음과 같습니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">pathlib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Path</span>\n\n<span class=\"n\">BASE_DIR</span> <span class=\"o\">=</span> <span class=\"n\">Path</span><span class=\"p\">(</span><span class=\"vm\">__file__</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">resolve</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">parent</span><span class=\"o\">.</span><span class=\"n\">parent</span>\n\n<span class=\"n\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n    <span class=\"s1\">&#39;blog&#39;</span><span class=\"p\">,</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n\n<span class=\"n\">TEMPLATES</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span>\n        <span class=\"s1\">&#39;BACKEND&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;django.template.backends.django.DjangoTemplates&#39;</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;DIRS&#39;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"n\">BASE_DIR</span> <span class=\"o\">/</span> <span class=\"s1\">&#39;templates&#39;</span><span class=\"p\">],</span>\n        <span class=\"s1\">&#39;APP_DIRS&#39;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"o\">...</span>\n    <span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>:설정:입니다.기본 프로젝트 템플릿을 사용하여 프로젝트를 생성했다면 템플릿 설정과 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>BASE_DIR”이 이미 존재하게 됩니다. 수정해야 할 설정은 : setting:’입니다.DIRS입니다.</p>\n<p>이러한 설정은 프로젝트의 루트에 “템플릿” 디렉토리를 가지고 있다고 가정합니다. “블로그” 앱의 템플릿을 재정의하려면 “템플릿” 디렉터리에 폴더를 생성한 다음 템플릿 파일을 해당 폴더에 추가하십시오.</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"None code\"><code>templates/\n    blog/\n        list.html\n        post.html\n</code></pre></div>\n<p>템플릿 로더는 먼저 “DIRS” 디렉토리에서 템플릿을 찾습니다. “blog” 앱의 뷰가 “blog/post.html”과 “blog/list.html” 템플릿을 요청하면 로더는 방금 만든 파일을 반환합니다.</p>\n</section>\n<section id=\"overriding-from-an-app-s-template-directory\">\n<h2>앱의 템플릿 디렉토리에서 재정의합니다.<a class=\"heading-anchor\" href=\"#overriding-from-an-app-s-template-directory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>프로젝트의 앱 외부에 위치한 템플릿을 재정의하기 때문에 프로젝트의 템플릿 폴더에 템플릿 재정의를 넣고 첫 번째 방법을 사용하는 것이 더 일반적입니다. 그러나 원하는 경우 앱의 템플릿 디렉터리에 재정의를 넣을 수도 있습니다.</p>\n<p>먼저 템플릿 설정이 앱 디렉터리 내에서 확인 중인지 확인합니다.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">TEMPLATES</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span>\n        <span class=\"o\">...</span><span class=\"p\">,</span>\n        <span class=\"s1\">&#39;APP_DIRS&#39;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"o\">...</span>\n    <span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>“myapp”이라는 앱에 템플릿 재정의를 넣고 재정의할 템플릿 이름을 “blog/list.html”과 “blog/post.html”로 지정하면 디렉터리 구조는 다음과 같습니다.</p>\n<div class=\"code-block\" data-language=\"none\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">None</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"None code\"><code>myapp/\n    templates/\n        blog/\n            list.html\n            post.html\n</code></pre></div>\n<p>설정:을(설정):APP_DIRS가 “참”으로 설정되면 템플릿 로더가 앱의 템플릿 디렉토리를 검색하여 템플릿을 찾습니다.</p>\n</section>\n<section id=\"extending-an-overridden-template\">\n<span id=\"id1\"></span><h2>재정의된 템플릿을 확장합니다.<a class=\"heading-anchor\" href=\"#extending-an-overridden-template\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>템플릿 로더를 구성한 경우 :ttag:’{% extenses %}’ 템플릿 태그를 사용하여 템플릿을 확장하는 동시에 재정의할 수 있습니다. 이렇게 하면 전체 템플릿을 다시 구현할 필요 없이 소규모 사용자 지정을 수행할 수 있습니다.</p>\n<p>예를 들어 이 기술을 사용하여 ‘’admin/base_site.html’ 템플릿에 사용자 정의 로고를 추가할 수 있습니다.</p>\n<blockquote>\n<div><figure class=\"code-block code-block-captioned\" data-language=\"html+django\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">templates/admin/base_site.html</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code> <span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;admin/base_site.html&quot;</span> <span class=\"cp\">%}</span>\n\n <span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">branding</span> <span class=\"cp\">%}</span>\n     <span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;link/to/logo.png&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;logo&quot;</span><span class=\"p\">&gt;</span>\n     <span class=\"cp\">{{</span> <span class=\"nb\">block</span><span class=\"nv\">.super</span> <span class=\"cp\">}}</span>\n <span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></figure>\n</div></blockquote>\n<p>주요 내용은 다음과 같습니다.</p>\n<ul class=\"simple\">\n<li><p>이 예에서는 구성된 프로젝트 수준의 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>템플릿” 디렉토리를 사용하여 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>admin/base_site.html”을 재정의하는 “templates/admin/base_site.html”에 파일을 생성합니다.</p></li>\n<li><p>새 템플릿은 “admin/base_site.html”을 확장하며, 이는 재정의되는 템플릿과 동일합니다.</p></li>\n<li><p>템플릿은 단지 “브랜드” 블록을 대체하고 맞춤형 로고를 추가하고 “블록”을 사용합니다.이전 내용을 보존할 수 있습니다.</p></li>\n<li><p>템플릿의 나머지 부분은``admin/base_site.html``.에서 변경되지 않은 상태로 상속됩니다.</p></li>\n</ul>\n<p>이 기술은 템플릿 로더가 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>확장” 태그를 결정할 때 이미 로드된 오버라이드 템플릿(“templates/admin/base_site.html”)을 고려하지 않기 때문에 작동합니다. “블록”과 결합합니다.Superdown은 작은 커스터마이징을 만드는 강력한 기술입니다.</p>\n</section>","rootId":"how-to-override-templates","toc":[{"title":"프로젝트의 템플릿 디렉터리에서 재정의합니다.","anchor":"overriding-from-the-project-s-templates-directory","children":[]},{"title":"앱의 템플릿 디렉토리에서 재정의합니다.","anchor":"overriding-from-an-app-s-template-directory","children":[]},{"title":"재정의된 템플릿을 확장합니다.","anchor":"extending-an-overridden-template","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"“How-to” 가이드","url":"/ko/4.0/howto/"}],"prev":{"docname":"howto/outputting-pdf","title":"How to create PDF files","url":"/ko/4.0/howto/outputting-pdf/"},"next":{"docname":"howto/static-files/index","title":"How to manage static files (e.g. images, JavaScript, CSS)","url":"/ko/4.0/howto/static-files/"},"formats":{"html":"/ko/4.0/howto/overriding-templates/","markdown":"/ko/4.0/howto/overriding-templates.md","json":"/ko/4.0/howto/overriding-templates.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/howto/overriding-templates.txt","official":"https://docs.djangoproject.com/ko/4.0/howto/overriding-templates/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}