{"title":"첫 번째 장고 앱 작성하기, part 7","version":"6.1","locale":"ko","docname":"intro/tutorial07","url":"/ko/6.1/intro/tutorial07/","canonical":"https://djangodocs.dev/ko/6.1/intro/tutorial07/","summary":"이 튜토리얼은 튜토리얼 6장 에 이어서 시작합니다. 우리는 웹 설문조사 어플리케이션을 계속 다루고 있으며, Tutorial 2 에서 봤었던 자동으로 생성된 관리자 사이트를 커스터마이징하는 데 초점을 맞출 것입니다. 도움을 받을 수 있는 방법 이 튜토리얼을 수행하는 데 문제가 있는 경우 FAQ…","html":"<h1>첫 번째 장고 앱 작성하기, part 7<a class=\"heading-anchor\" href=\"#writing-your-first-django-app-part-7\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>이 튜토리얼은 <a class=\"reference internal\" href=\"/ko/6.1/intro/tutorial06/\"><span class=\"doc\">튜토리얼 6장</span></a> 에 이어서 시작합니다. 우리는 웹 설문조사 어플리케이션을 계속 다루고 있으며, <a class=\"reference internal\" href=\"/ko/6.1/intro/tutorial02/\"><span class=\"doc\">Tutorial 2</span></a> 에서 봤었던 자동으로 생성된 관리자 사이트를 커스터마이징하는 데 초점을 맞출 것입니다.</p>\n<aside class=\"admonition-where-to-get-help admonition\">\n<p class=\"admonition-title\">도움을 받을 수 있는 방법</p>\n<p>이 튜토리얼을 수행하는 데 문제가 있는 경우 FAQ 섹션인 :doc:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Getting Help &lt;/faq/help&gt;`으로 이동하십시오.</p>\n</aside>\n<section id=\"customize-the-admin-form\">\n<h2>관리자 폼 커스터마이징<a class=\"heading-anchor\" href=\"#customize-the-admin-form\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> 모델을 <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.site.register(Question)</span></code>에 등록함으로써, Django는 디폴트 폼 표현을 구성 할 수 있었습니다. 관리 폼이 보이고 작동하는 방법을 커스터마이징하려는 경우가 있습니다. 객체를 등록 할 때 Django에 원하는 옵션을 알려주면 커스터마이징 할 수 있습니다.</p>\n<p>수정 폼의 필드를 재정렬하여 이것이 작동하는 법을 보겠습니다. <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.site.register(Question)</span></code> 줄을 다음과 같이 바꾸세요:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Question</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">QuestionAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Question</span><span class=\"p\">,</span> <span class=\"n\">QuestionAdmin</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p>모델의 관리자 옵션을 변경해야 할 때마다 이 패턴 – 모델 어드민 클래스를 만든 다음, <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.site.register()</span></code>에 두 번째 인수로 전달합니다 – 을 따라하면 됩니다.</p>\n<p>여기서 특별한 변경 사항은 “발행일”이 “설문” 필드 앞에 오게 만듭니다.</p>\n<img alt=\"필드가 재정렬되었습니다.\" src=\"/ko/6.1/_images/admin07.png\" />\n<p>단지 2개의 필드만으로는 인상적이지는 않지만, 수십 개의 필드가 있는 관리 폼의 경우에는 직관적인 순서을 선택하는 것이 사용 편리성의 중요한 부분입니다.</p>\n<p>수십 개의 필드가 있는 폼에 관해서는 폼을 fieldset으로 분할하는 것이 좋습니다.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Question</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">QuestionAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fieldsets</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">]}),</span>\n        <span class=\"p\">(</span><span class=\"s2\">&quot;Date information&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">]}),</span>\n    <span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Question</span><span class=\"p\">,</span> <span class=\"n\">QuestionAdmin</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p><a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code></a>의 각 튜플의 첫 번째 요소는 fieldset의 제목입니다. 우리의 폼이 다음과 같이 변했네요.</p>\n<img alt=\"이제 양식에 필드 세트가 있습니다.\" src=\"/ko/6.1/_images/admin08t.png\" />\n</section>\n<section id=\"adding-related-objects\">\n<h2>관련된 객체 추가<a class=\"heading-anchor\" href=\"#adding-related-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>OK, 우리는 Question 관리자 페이지를 가지고 있습니다. 그러나, <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code>은 여러 개의 <code class=\"docutils literal notranslate\"><span class=\"pre\">Choice</span></code>들을 가지고 있음에도, admin 페이지는 선택 사항을 표시하지 않습니다.</p>\n<p>아직까진 말이죠.</p>\n<p>이 문제를 해결하는 방법은 두 가지가 있습니다. 첫 번째는 <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code>:과 마찬가지로 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Choice``를 관리자에 등록하는 것입니다.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Choice</span><span class=\"p\">,</span> <span class=\"n\">Question</span>\n\n<span class=\"c1\"># ...</span>\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Choice</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p>이제 “Choices”는 Django 관리자가 사용할 수 있는 옵션입니다. “Add choice” 폼은 다음과 같습니다.</p>\n<img alt=\"선택 관리자 페이지\" src=\"/ko/6.1/_images/admin09.png\" />\n<p>이 양식에서 “Question” 필드는 데이터베이스의 모든 질문을 포함하는 select box입니다. Django는 <a class=\"reference internal\" href=\"/ko/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code></a>가 admin에서 <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select&gt;</span></code>로 표현되어야 함을 알고 있습니다. 우리의 경우, 지금은 단 하나의 질문만이 존재합니다.</p>\n<p>Also note the “Add another question” button (displayed as a plus sign) to the\nright of the “Question” field. Every <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> relationship gets this\nbutton for free. When you click this button, you’ll get a popup window with the\n“Add question” form. If you add a question in that window and click “Save”,\nDjango will save the question to the database and dynamically add it as the\nselected choice on the “Add choice” form you’re looking at.</p>\n<p>그러나 실제로 이것은 <code class=\"docutils literal notranslate\"><span class=\"pre\">Choice</span></code> 객체를 시스템에 추가하는 비효율적인 방법입니다. <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> 객체를 생성할 때 여러 개의 Choices를 직접 추가할 수 있다면 더 좋을 것입니다. 그것을 만들어 봅시다.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Choice</span></code> 모델에 대한 <code class=\"docutils literal notranslate\"><span class=\"pre\">register()</span></code> 호출을 제거하십시오. 그런 다음 <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> 등록 코드를 다음과 같이 편집하십시오:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Choice</span><span class=\"p\">,</span> <span class=\"n\">Question</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ChoiceInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">StackedInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Choice</span>\n    <span class=\"n\">extra</span> <span class=\"o\">=</span> <span class=\"mi\">3</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">QuestionAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fieldsets</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">]}),</span>\n        <span class=\"p\">(</span><span class=\"s2\">&quot;Date information&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">],</span> <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;collapse&quot;</span><span class=\"p\">]}),</span>\n    <span class=\"p\">]</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">ChoiceInline</span><span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Question</span><span class=\"p\">,</span> <span class=\"n\">QuestionAdmin</span><span class=\"p\">)</span>\n</code></pre></figure>\n<p>위 소소는 Django에게  “<code class=\"docutils literal notranslate\"><span class=\"pre\">Choice</span></code> 객체는 <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> 관리자 페이지에서 편집된다. 기본으로 3가지 선택 항목을 제공함.” 이라고 알려줍니다.</p>\n<p>모양을 보려면 “Add question” 페이지를 로드하십시오.</p>\n<img alt=\"이제 질문 추가 페이지에 선택 항목이 있습니다.\" src=\"/ko/6.1/_images/admin10t.png\" />\n<p>이 화면은 다음과 같이 작동합니다. 관련된 선택 사항을 위한 슬롯이 세 개 있으며– <code class=\"docutils literal notranslate\"><span class=\"pre\">extra</span></code>로 지정됨 – 이미 생성된 객체의 “Change” 페이지의 경우에도 빈 세 개의 슬롯이 생깁니다.</p>\n<p>현재 세 개의 슬롯 끝에 “Add another Choice” 링크가 있습니다. 이 링크를 클릭하면 새로운 슬롯이 추가됩니다. 추가된 슬롯을 제거하려면 해당 슬롯의 오른쪽 상단에 있는 X를 클릭하면 됩니다. 아래 이미지는 추가된 슬롯이 표시됩니다.</p>\n<img alt=\"동적으로 추가된 추가 슬롯\" src=\"/ko/6.1/_images/admin14t.png\" />\n<p>작은 문제가 하나 있습니다. 관련 <code class=\"docutils literal notranslate\"><span class=\"pre\">Choice</span></code> 객체를 입력하기 위한 모든 필드를 표시하는 데는 많은 화면 공간이 필요합니다. 이러한 이유로 Django는 인라인 관련 객체를 표시하는 표 형식의 방법을 제공합니다. 이를 사용하려면 <code class=\"docutils literal notranslate\"><span class=\"pre\">ChoiceInline</span></code> 선언을 다음과 같이 변경하면 됩니다.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ChoiceInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></figure>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">StackedInline</span></code> 대신에 <code class=\"docutils literal notranslate\"><span class=\"pre\">TabularInline</span></code>을 사용하면, 관련된 객체는 좀 더 조밀하고 테이블 기반 형식으로 표시됩니다:</p>\n<img alt=\"이제 질문 추가 페이지에 더 간결한 선택 항목이 있습니다.\" src=\"/ko/6.1/_images/admin11t.png\" />\n<p>추가적인 “Delete?” 열은 “Add another Choice”버튼을 사용하여 추가된 행과 이미 저장된 행을 삭제할 수 있으므로 유의하세요.</p>\n</section>\n<section id=\"customize-the-admin-change-list\">\n<h2>관리자 변경 목록(change list) 커스터마이징<a class=\"heading-anchor\" href=\"#customize-the-admin-change-list\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>이제 질문 관리 페이지가 괜찮아 보이므로, 시스템의 모든 질문을 표시하는 “변경 목록” 페이지를 약간 조정하십시오.</p>\n<p>다음은 이 시점의 모습입니다.</p>\n<img alt=\"투표 변경 목록 페이지\" src=\"/ko/6.1/_images/admin04t.png\" />\n<p>기본적으로 Django는 각 객체의 <code class=\"docutils literal notranslate\"><span class=\"pre\">str()</span></code> 값을 표시합니다. 그러나 경우에 따라 개별 필드를 표시하는 것이 더 유용할 수 있습니다. 이를 위해 attr:~django.contrib.admin.ModelAdmin.list_display admin 옵션을 사용합니다. 이 옵션은 객체의 변경 목록 페이지에서 열로 표시할 필드 이름의 목록입니다.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">QuestionAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">]</span>\n</code></pre></figure>\n<p>좋은 측정을 위해 <a class=\"reference internal\" href=\"/ko/6.1/intro/tutorial02/\"><span class=\"doc\">Tutorial 2</span></a>:의 <code class=\"docutils literal notranslate\"><span class=\"pre\">was_published_recently()</span></code> 메소드를 추가해봅시다.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">QuestionAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;was_published_recently&quot;</span><span class=\"p\">]</span>\n</code></pre></figure>\n<p>이제 질문 변경 목록 페이지는 다음과 같습니다.</p>\n<img alt=\"설문조사 변경 목록 페이지, 업데이트됨\" src=\"/ko/6.1/_images/admin12t.png\" />\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">was_published_recently</span></code> 헤더의 경우를 제외하고 그 값으로 정렬하기 위해 열 머리글을 클릭 할 수 있습니다. 왜냐하면 임의의 메서드의 출력에 의한 정렬은 지원되지 않기 때문입니다. 또한 <code class=\"docutils literal notranslate\"><span class=\"pre\">was_published_recently</span></code>에 대한 열 머리글은 기본적으로 메서드 이름 (밑줄을 공백으로 대체)이며 각 줄에는 출력의 문자열 표현이 포함되어 있습니다.</p>\n<p><a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> 데코레이터를 해당 메서드에 적용하면 다음과 같이 개선할 수 있습니다(<span class=\"xref std std-doc\">Tutorial 2 &lt;/intro/tutorial02&gt;`에서 생성한 :file:`polls/models.py</span> 파일을 확장).</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/models.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Question</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span>\n        <span class=\"n\">boolean</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Published recently?&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">was_published_recently</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">now</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"n\">now</span> <span class=\"o\">-</span> <span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">timedelta</span><span class=\"p\">(</span><span class=\"n\">days</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span> <span class=\"o\">&lt;=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">pub_date</span> <span class=\"o\">&lt;=</span> <span class=\"n\">now</span>\n</code></pre></figure>\n<p>Decorator를 통해 구성할 수 있는 속성에 대한 자세한 내용은 :attr:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>~django.contrib.admin.ModelAdmin.list_display`을 참조하십시오.</p>\n<p><code class=\"file docutils literal notranslate\"><span class=\"pre\">polls/admin.py</span></code> 파일을 다시 편집하고 Question  변경 목록 페이지에 개선점을 추가하십시오: <a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter\" title=\"django.contrib.admin.ModelAdmin.list_filter\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_filter</span></code></a>를 사용하는 필터. <code class=\"docutils literal notranslate\"><span class=\"pre\">QuestionAdmin</span></code>에 다음 줄을 추가하십시오:</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\">list_filter</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">pub_date</span></code> 필드에 의해 사람들이 변경 목록을 필터링 할 수 있게 해주는 “Filter” 사이드 바가 추가되었습니다:</p>\n<img alt=\"설문조사 변경 목록 페이지, 업데이트됨\" src=\"/ko/6.1/_images/admin13t.png\" />\n<p>표시되는 필터의 유형은 필터링중인 필드의 유형에 따라 다릅니다. <code class=\"docutils literal notranslate\"><span class=\"pre\">pub_date</span></code>는 <a class=\"reference internal\" href=\"/ko/6.1/ref/models/fields/#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code></a>이므로, Django는 “Any date”, “Today”, “Past 7 days”, “This month”, “This year” 등의 적절한 필터 옵션을 제공합니다.</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\">search_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>그러면 변경 목록 맨 위에 검색 창이 추가됩니다. 누군가가 검색어를 입력하면, 장고는 <code class=\"docutils literal notranslate\"><span class=\"pre\">question_text</span></code> 필드를 검색합니다. 당신이 원하는 만큼의 필드를 사용할 수 있습니다 – 그것은 내부적으로 <code class=\"docutils literal notranslate\"><span class=\"pre\">LIKE</span></code> 쿼리를 사용하기 때문에 검색 필드의 수를 적당한 수로 제한하면 데이터베이스가 검색을 더 쉽게 할 수 있습니다.</p>\n<p>Now’s also a good time to note that change lists give you free pagination. The\ndefault is to display 100 items per page.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">더 보기</p>\n<p>The following <a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> options allow\nfurther customization of change lists:\n<a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_per_page\" title=\"django.contrib.admin.ModelAdmin.list_per_page\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_per_page</span></code></a>,\n<a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields\" title=\"django.contrib.admin.ModelAdmin.search_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">search_fields</span></code></a>,\n<a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.date_hierarchy\" title=\"django.contrib.admin.ModelAdmin.date_hierarchy\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code></a>, and\n<a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a>.</p>\n</aside>\n</section>\n<section id=\"customize-the-admin-look-and-feel\">\n<h2>관리자 룩앤필 커스터마이징<a class=\"heading-anchor\" href=\"#customize-the-admin-look-and-feel\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>명백히, 모든 관리자 페이지 상단에 “Django administration”이 있다는 것은 우스꽝스럽습니다. 이건 그저 자리를 채워넣기 위한 문자열입니다.</p>\n<p>그러나 Django의 템플릿 시스템을 사용하여 변경할 수 있습니다. Django 관리자는 Django 자체에 의해 구동되며, 인터페이스는 Django 자신의 템플릿 시스템을 사용합니다.</p>\n<section id=\"customizing-your-project-s-templates\">\n<span id=\"ref-customizing-your-projects-templates\"></span><h3><em>프로젝트의</em> 템플릿 커스터마이징<a class=\"heading-anchor\" href=\"#customizing-your-project-s-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">djangotutorial</span></code> 디렉토리에 <code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code> 디렉토리를 생성하세요. 템플릿은 Django가 접근할 수 있는 파일 시스템 어디에나 둘 수 있습니다. (Django는 서버를 실행하는 사용자 권한으로 실행됩니다.) 그러나 템플릿은 프로젝트 내부에 두는 것이 일반적으로 권장됩니다.</p>\n<p>설정 파일 (<code class=\"file docutils literal notranslate\"><span class=\"pre\">mysite/settings.py</span></code>를 기억하세요)을 열고 <a class=\"reference internal\" href=\"/ko/6.1/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a> 옵션을 <a class=\"reference internal\" href=\"/ko/6.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> 설정에 추가하십시오:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">mysite/settings.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</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=\"Python code\"><code><span class=\"n\">TEMPLATES</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;django.template.backends.django.DjangoTemplates&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;DIRS&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"n\">BASE_DIR</span> <span class=\"o\">/</span> <span class=\"s2\">&quot;templates&quot;</span><span class=\"p\">],</span>\n        <span class=\"s2\">&quot;APP_DIRS&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;OPTIONS&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;context_processors&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>\n                <span class=\"s2\">&quot;django.template.context_processors.request&quot;</span><span class=\"p\">,</span>\n                <span class=\"s2\">&quot;django.contrib.auth.context_processors.auth&quot;</span><span class=\"p\">,</span>\n                <span class=\"s2\">&quot;django.contrib.messages.context_processors.messages&quot;</span><span class=\"p\">,</span>\n            <span class=\"p\">],</span>\n        <span class=\"p\">},</span>\n    <span class=\"p\">},</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p><a class=\"reference internal\" href=\"/ko/6.1/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a>는 Django 템플릿을 로드 할 때 검사 할 파일 시스템 디렉토리 목록입니다. 바로 검색 경로입니다.</p>\n<aside class=\"admonition-organizing-templates admonition\">\n<p class=\"admonition-title\">템플릿 구성</p>\n<p>정적 파일과 마찬가지로, 하나의 커다란 템플릿 디렉토리에 모든 템플릿을 함께 넣을 수 있습니다. 그렇게 해도 완벽하게 잘 작동할 것입니다. 그러나, 특정 애플리케이션에 속한 템플릿은 프로젝트(<code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code>) 가 아닌 해당 애플리케이션의 템플릿 디렉토리(예: <code class=\"docutils literal notranslate\"><span class=\"pre\">polls/templates</span></code>)에 있어야 합니다. 우리는 왜 우리가 이렇게 해야하는 지에 대한 더 자세한 내용을 <a class=\"reference internal\" href=\"/ko/6.1/intro/reusable-apps/\"><span class=\"doc\">reusable apps tutorial</span></a> 에서 논의할 것입니다.</p>\n</aside>\n<p>이제 <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> inside <code class=\"docutils literal notranslate\"><span class=\"pre\">templates``라는</span> <span class=\"pre\">디렉토리를</span> <span class=\"pre\">만들고</span> <span class=\"pre\">Django</span> <span class=\"pre\">자체</span> <span class=\"pre\">소스</span> <span class=\"pre\">코드(:source:`django/contrib/admin/templates`)</span> <span class=\"pre\">에</span> <span class=\"pre\">있는</span> <span class=\"pre\">기본</span> <span class=\"pre\">Django</span> <span class=\"pre\">관리자</span> <span class=\"pre\">템플릿</span> <span class=\"pre\">디렉토리</span> <span class=\"pre\">내에</span> <span class=\"pre\">``admin/base_site.html</span></code> 템플릿을 해당 디렉토리로 복사합니다.</p>\n<aside class=\"admonition-where-are-the-django-source-files admonition\">\n<p class=\"admonition-title\">Django 소스 파일은 어디에 있습니까?</p>\n<p>Django 소스 파일이 시스템에있는 위치를 찾는 데 어려움이있는 경우 다음 명령을 실행하십시오.</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</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=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>-c<span class=\"w\"> </span><span class=\"s2\">&quot;import django; print(django.__path__)&quot;</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</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=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> py -c <span class=\"s2\">&quot;import django; print(django.__path__)&quot;</span>\n</code></pre></div></div></div>\n</aside>\n<p>그런 다음 파일을 편집하고 <code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">site_header|default:_('Django</span> <span class=\"pre\">administration')</span> <span class=\"pre\">}}</span></code>  (중괄호 포함)을 적합한 사이트 이름으로 바꿉니다. 코드 섹션은 다음과 같습니다.</p>\n<div class=\"code-block\" data-language=\"html+django\"><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\">block</span> <span class=\"nv\">branding</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;site-name&quot;</span><span class=\"p\">&gt;&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;admin:index&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>Polls Administration<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">user.is_anonymous</span> <span class=\"cp\">%}</span>\n  <span class=\"cp\">{%</span> <span class=\"k\">include</span> <span class=\"s2\">&quot;admin/color_theme_toggle.html&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>이 방법을 사용하여 템플릿을 재정의하는 방법을 학습합니다. 실제 프로젝트에서는 아마 <a class=\"reference internal\" href=\"/ko/6.1/ref/contrib/admin/#django.contrib.admin.AdminSite.site_header\" title=\"django.contrib.admin.AdminSite.site_header\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.AdminSite.site_header</span></code></a> 속성을 사용하여 이 개별 커스터마이징을 보다 쉽게 만들 수 있습니다.</p>\n<p>이 템플릿 파일에는 <code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span> <span class=\"pre\">block</span> <span class=\"pre\">branding</span> <span class=\"pre\">%}</span></code>및 <code class=\"docutils literal notranslate\"><span class=\"pre\">{{title}}</span></code>과 같은 텍스트가 많이 포함되어 있습니다. <code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span></code>와 <code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span></code>태그들은 장고의 템플릿 언어의 일부입니다. Django가 <code class=\"docutils literal notranslate\"><span class=\"pre\">admin/base_site.html</span></code>을 렌더링 할 때, 이 템플릿 언어는 <a class=\"reference internal\" href=\"/ko/6.1/intro/tutorial03/\"><span class=\"doc\">튜토리얼 3장</span></a>에서 보았 듯이 최종 HTML 페이지를 생성하기 위해 평가 될 것입니다.</p>\n<p>Django의 기본 관리 템플릿은 재정의할 수 있습니다. 템플릿을 재정의하려면 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>base_site.html``에서 수행한 작업을 동일하게 수행하십시오. 즉, 기본 디렉토리에서 사용자 지정 디렉토리로 복사한 후 변경하십시오.</p>\n</section>\n<section id=\"customizing-your-application-s-templates\">\n<h3><em>어플리케이션의</em> 템플릿 사용자 정의<a class=\"heading-anchor\" href=\"#customizing-your-application-s-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>그러나 <a class=\"reference internal\" href=\"/ko/6.1/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a>가 기본설정으로 비어 있다면, 장고는 기본 관리자 템플릿을 어떻게 찾을까요? 그 해답은 <a class=\"reference internal\" href=\"/ko/6.1/ref/settings/#std-setting-TEMPLATES-APP_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">APP_DIRS</span></code></a> 설정이 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>로 설정되어 있기 때문에 Django는 각 어플리케이션 패키지 내에서 <code class=\"docutils literal notranslate\"><span class=\"pre\">templates/</span></code> 서브 디렉토리를 자동으로 찾아서 대체하게 됩니다. (<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code>이 어플리케이션 임을 잊지 마십시오.)</p>\n<p>투표 어플리케이션은 복잡하지 않으며 사용자 정의 admin 템플릿이 필요하지 않습니다. 그러나 Django의 표준 admin 템플릿을 좀더 정교하게 필요에 맞게 수정 할 경우 <em>프로젝트</em> 템플릿 대신 <em>어플리케이션</em>의 템플릿을 수정하는 것이 더 현명합니다. 그렇게 하면 다른 새 프로젝트에 투표 애플리케이션을 포함시킬 수 있고, 필요할때는 커스텀 템플릿을 찾을수 있습니다.</p>\n<p>Django가 템플릿을 찾는 방법에 대한 자세한 정보는 <a class=\"reference internal\" href=\"/ko/6.1/topics/templates/#template-loading\"><span class=\"std std-ref\">템플릿 로딩 문서</span></a>를 보십시오.</p>\n</section>\n</section>\n<section id=\"customize-the-admin-index-page\">\n<h2>admin 인덱스 페이지 수정하기<a class=\"heading-anchor\" href=\"#customize-the-admin-index-page\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>제목과 같이, Django admin 인덱스 페이지의 모양과 느낌을 수정하고 싶을 수도 있습니다.</p>\n<p>기본적으로 admin 어플리케이션과 함께 등록된 <a class=\"reference internal\" href=\"/ko/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>의 모든 어플리케이션을 사전순으로 표시합니다. 어쩌면 레이아웃을 크게 변경하고자 할 수 있습니다. 설사 그렇게 하더라도 인덱스는 admin의 가장 중요한 페이지이고, 사용하기 쉬워야 합니다.</p>\n<p>커스터마이징할 템플릿은 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>admin/index.html``입니다. (이전 섹션에서 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>admin/base_site.html``을 복사한 것과 동일하게, 기본 디렉토리에서 커스텀 템플릿 디렉토리로 파일을 복사하세요.) 파일을 편집해 보면 <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>app_list``라는 템플릿 변수를 사용하는 것을 확인할 수 있습니다. 이 변수에는 설치된 모든 Django 앱이 포함되어 있습니다. 이를 사용하는 대신, 필요에 따라 개별 객체별 admin 페이지로 연결되는 링크를 원하는 방식으로 하드코딩할 수 있습니다.</p>\n<p>admin에 익숙해졌으면, 서드파티 패키지 사용 방법에 대해 배울 수 있는 :doc:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>part 8 of this tutorial &lt;/intro/tutorial08&gt;`을 보세요.</p>\n</section>","rootId":"writing-your-first-django-app-part-7","toc":[{"title":"관리자 폼 커스터마이징","anchor":"customize-the-admin-form","children":[]},{"title":"관련된 객체 추가","anchor":"adding-related-objects","children":[]},{"title":"관리자 변경 목록(change list) 커스터마이징","anchor":"customize-the-admin-change-list","children":[]},{"title":"관리자 룩앤필 커스터마이징","anchor":"customize-the-admin-look-and-feel","children":[{"title":"프로젝트의 템플릿 커스터마이징","anchor":"customizing-your-project-s-templates","children":[]},{"title":"어플리케이션의 템플릿 사용자 정의","anchor":"customizing-your-application-s-templates","children":[]}]},{"title":"admin 인덱스 페이지 수정하기","anchor":"customize-the-admin-index-page","children":[]}],"breadcrumbs":[{"docname":"intro/index","title":"시작하기","url":"/ko/6.1/intro/"}],"prev":{"docname":"intro/tutorial06","title":"첫 번째 장고 앱 작성하기, part 6","url":"/ko/6.1/intro/tutorial06/"},"next":{"docname":"intro/tutorial08","title":"첫 번째 Django 앱 작성하기, part 8","url":"/ko/6.1/intro/tutorial08/"},"formats":{"html":"/ko/6.1/intro/tutorial07/","markdown":"/ko/6.1/intro/tutorial07.md","json":"/ko/6.1/intro/tutorial07.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/intro/tutorial07.txt","official":"https://docs.djangoproject.com/ko/6.1/intro/tutorial07/","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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}