{"title":"정적 파일 관리하기(이미지, 자바스크립트, CSS 등)","version":"5.2","locale":"ko","docname":"howto/static-files/index","url":"/ko/5.2/howto/static-files/","canonical":"https://djangodocs.dev/ko/5.2/howto/static-files/","summary":"웹 사이트는 일반적으로 이미지, JavaScript 또는 CSS와 같은 추가 파일을 제공해야 합니다. Django에서는 이러한 파일을 “static files”라고 합니다. Django는 :mod:’django.contrib.static files’를 제공하여 파일 관리를 도와줍니다. 이…","html":"<h1>정적 파일 관리하기(이미지, 자바스크립트, CSS 등)<a class=\"heading-anchor\" href=\"#how-to-manage-static-files-e-g-images-javascript-css\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>웹 사이트는 일반적으로 이미지, JavaScript 또는 CSS와 같은 추가 파일을 제공해야 합니다. Django에서는 이러한 파일을 “static files”라고 합니다. Django는 :mod:’django.contrib.static files’를 제공하여 파일 관리를 도와줍니다.</p>\n<p>이 페이지에서는 이러한 정적 파일을 서비스하는 방법에 대해 설명합니다.</p>\n<section id=\"configuring-static-files\">\n<h2>정적 파일을 구성하는 중입니다.<a class=\"heading-anchor\" href=\"#configuring-static-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ol class=\"arabic\">\n<li><p>“django.contrib.static files”가 다음 설정에 포함되도록 하십시오. <a class=\"reference internal\" href=\"/ko/5.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p></li>\n<li><p>설정 파일에서 다음을 정의합니다.:setting:STATIC_URL,  예를 들어:</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\">STATIC_URL</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;static/&quot;</span>\n</code></pre></div>\n</li>\n<li><p>In your templates, use the <a class=\"reference internal\" href=\"/ko/5.2/ref/templates/builtins/#std-templatetag-static\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">static</span></code></a> template tag to build the URL for\nthe given relative path using the configured <code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code>\n<a class=\"reference internal\" href=\"/ko/5.2/ref/settings/#std-setting-STORAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STORAGES</span></code></a> alias.</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\">load</span> <span class=\"nv\">static</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;</span><span class=\"cp\">{%</span> <span class=\"k\">static</span> <span class=\"s1\">&#39;my_app/example.jpg&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;My image&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</li>\n<li><p>정적 파일을 앱의 “static” 폴더에 저장합니다. 예를 들어 다음과 같습니다.``my_app/static/my_app/example.jpg``.</p></li>\n</ol>\n<aside class=\"admonition-serving-the-files admonition\">\n<p class=\"admonition-title\">파일을 제공합니다.</p>\n<p>이러한 구성 단계 외에도 정적 파일도 실제로 서비스해야 합니다.</p>\n<p>개발 중에 :mod:’django.contrib.static files’를 사용할 경우 :설정::djadmin:’runserver’에 의해 자동으로 수행됩니다.DEBUG는 “True”로 설정되어 있습니다(func:”django.contrib.static files” 참조).view.serve’)를 입력합니다.</p>\n<p>이 방법은 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>총적으로 비효율적**이며 아마도 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">**</span></a>불안한**이므로 <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">**</span></a>운영에 적합하지 않습니다*.</p>\n<p>프로덕션 환경에서 정적 파일을 서비스하기 위한 적절한 전략은 :doc:’/how to/static files/deployment’를 참조하십시오.</p>\n</aside>\n<p>프로젝트에 특정 앱에 연결되지 않은 정적 자산도 있을 수 있습니다. 앱 내에서 “static/” 디렉토리를 사용하는 것 외에도 디렉토리 목록(:seting:”)을 정의할 수 있습니다.Django가 정적 파일도 찾을 수 있는 설정 파일의 STATICFILES_DIRS)입니다. 예를 들어 다음과 같습니다.</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\">STATICFILES_DIRS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">BASE_DIR</span> <span class=\"o\">/</span> <span class=\"s2\">&quot;static&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;/var/www/static/&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>:설정:’에 대한 설명서를 참조하십시오.정적 파일_입니다.”정적 파일”이 당신의 파일을 어떻게 찾는지에 대한 자세한 내용은 FINDER의 설정입니다.</p>\n<aside class=\"admonition-static-file-namespacing admonition\">\n<p class=\"admonition-title\">정적 파일 네임스페이싱</p>\n<p>이제 정적 파일을 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>my_app/static/”에 직접 넣어도 (또 다른 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>my_app” 서브디렉토리가 아니라) 벗어날 수 있을지 모르지만, 실제로는 좋지 않은 생각일 것입니다. Django는 이름이 일치하는 첫 번째 정적 파일을 사용하며, <em>different</em> 애플리케이션에서 동일한 이름의 정적 파일이 있는 경우 Django는 이 파일을 구별할 수 없습니다. 우리는 Django를 제대로 가리킬 수 있어야 하며, 이것을 확실히 하기 위한 최선의 방법은 <em>이름 간격*을 정하는 것입니다. 즉, 이러한 정적 파일을 애플리케이션 자체용으로 명명된 *또 다른</em> 디렉토리에 넣습니다.</p>\n<p>:seting:’에서 정적 자산의 네임스페이스를 지정할 수 있습니다.staticfiles_DIRS’는 다음과 같이 지정합니다.ref:’prefixs’.</p>\n</aside>\n</section>\n<section id=\"serving-static-files-during-development\">\n<span id=\"serving-static-files-in-development\"></span><h2>개발 중에 정적 파일을 제공합니다.<a class=\"heading-anchor\" href=\"#serving-static-files-during-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>위에서 설명한 바와 같이 :mod:’django.contrib.static files’를 사용하는 경우 :설정: :djadmin:’runserver’는 자동으로 이 작업을 수행합니다.DEBUG는 “True”로 설정되어 있습니다. “django.contrib.static files”가 없는 경우 : setting:”으로 설정합니다.설치되었습니다.APPs’에서는 :func:’django’를 사용하여 정적 파일을 수동으로 제공할 수 있습니다.정적이죠.의견을 제시합니다.</p>\n<p>이것은 생산용으로 적합하지 않습니다! 일반적인 배포 전략은 :doc:’/how to/static-files/deploy’를 참조하십시오.</p>\n<p>예를 들어, :setting:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>STATIC_URL`이 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>static/<a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>로 정의된 경우, <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>urls.py``에 다음 조각을 추가하여 이를 수행할 수 있습니다:</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\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.urls.static</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">static</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ... the rest of your URLconf goes here ...</span>\n<span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"n\">static</span><span class=\"p\">(</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">STATIC_URL</span><span class=\"p\">,</span> <span class=\"n\">document_root</span><span class=\"o\">=</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">STATIC_ROOT</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">참고</p>\n<p>이 도우미 함수는 디버그 모드에서만 작동하며 주어진 접두사가 로컬(예: <code class=\"docutils literal notranslate\"><span class=\"pre\">static/</span></code>)이고 URL(예: <code class=\"docutils literal notranslate\"><span class=\"pre\">http://static.example.com/</span></code>)이 아닌 경우에만 작동합니다.</p>\n<p>또한 이 도우미 기능은 실제 :seting:’만 제공합니다.STATIC_ROOT’ 폴더. :mod:’django.contrib.static files’와 같은 정적 파일 검색을 수행하지 않습니다.</p>\n<p>마지막으로 정적 파일은 WSGI 응용 프로그램 계층에서 래퍼를 통해 제공됩니다. 결과적으로 정적 파일 요청은 일반적인 :doc:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>미들웨어 체인 &lt;/topics/http/middleware&gt;`을 통과하지 않습니다.</p>\n</aside>\n</section>\n<section id=\"serving-files-uploaded-by-a-user-during-development\">\n<span id=\"serving-uploaded-files-in-development\"></span><h2>개발 중에 사용자가 업로드한 파일을 제공합니다.<a class=\"heading-anchor\" href=\"#serving-files-uploaded-by-a-user-during-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>개발 중에:설정:에서 사용자가 업로드한 미디어 파일을 제공할 수 있습니다.’MEDIA_ROOT’는 :func:’django’를 사용합니다.정적이죠.의견을 제시합니다.</p>\n<p>이것은 생산용으로 적합하지 않습니다! 일반적인 배포 전략은 :doc:’/how to/static-files/deploy’를 참조하십시오.</p>\n<p>예를 들어, :setting:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>MEDIA_URL`이 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>media/<a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>로 정의된 경우, 다음 조각을 :setting:<a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>ROOT_URLCONF`에 추가하여 이를 수행할 수 있습니다:</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\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.urls.static</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">static</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ... the rest of your URLconf goes here ...</span>\n<span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"n\">static</span><span class=\"p\">(</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">MEDIA_URL</span><span class=\"p\">,</span> <span class=\"n\">document_root</span><span class=\"o\">=</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">MEDIA_ROOT</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">참고</p>\n<p>이 도우미 함수는 디버그 모드에서만 작동하며 주어진 접두어가 로컬(예: <code class=\"docutils literal notranslate\"><span class=\"pre\">media/</span></code>)이고 URL(예: <code class=\"docutils literal notranslate\"><span class=\"pre\">http://media.example.com/</span></code>)이 아닌 경우에만 작동합니다.</p>\n</aside>\n</section>\n<section id=\"testing\">\n<span id=\"staticfiles-testing-support\"></span><h2>테스트중<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>내장된 테스트 클라이언트 대신 실제 HTTP 요청을 사용하는 테스트를 실행하는 경우(즉, 내장된 :class를 사용하는 경우):”LiveServerTestCase &gt;django.test입니다.’라이브서버 테스트 사례’) 정적 자산은 콘텐츠의 나머지 부분에 제공되어야 테스트 환경이 가능한 한 충실하게 실제 데이터를 재현할 수 있지만 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>라이브서버 테스트 사례”는 매우 기본적인 정적 파일 서비스 기능만 갖추고 있습니다. 정적인 파일(static files) 애플리케이션의 파인더 기능에 대해서는 알지 못하며 정적인 내용은 이미 다음과 같은 설정으로 수집되었다고 가정합니다.STATIC_ROOT’입니다.</p>\n<p>이 때문에 “정적 파일”은 자체 클래스인 “django.contrib.static files.testing”을 제공합니다.StaticLiveServer TestCase’는 이러한 테스트를 실행하는 동안 모든 자산을 “DEBUG &#64; True”로 개발 시 얻은 것과 매우 유사한 방식으로 투명하게 처리할 수 있는 내장형 테스트 사례의 하위 클래스로서, 즉 “staticadmin:”collectstatic”을 먼저 사용할 필요가 없습니다.</p>\n</section>\n<section id=\"deployment\">\n<h2>배치<a class=\"heading-anchor\" href=\"#deployment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>:mod:’django.static files’는 정적 파일을 한 디렉토리로 수집하여 쉽게 제공할 수 있도록 편리한 관리 명령을 제공합니다.</p>\n<ol class=\"arabic\">\n<li><p>: setting:’을 설정합니다.STATIC_ROOT’ 설정은 다음과 같이 이러한 파일을 제공할 디렉토리로 설정합니다.</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\">STATIC_ROOT</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;/var/www/example.com/static/&quot;</span>\n</code></pre></div>\n</li>\n<li><p>Run the <a class=\"reference internal\" href=\"/ko/5.2/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></code></a> management command:</p>\n<div class=\"code-block\" data-language=\"shell\"><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=\"w\"> </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>collectstatic\n</code></pre></div>\n<p>그러면 정적 폴더의 모든 파일이 :seting:’로 복사됩니다.STATIC_ROOT’ 디렉토리입니다.</p>\n</li>\n<li><p>선택한 웹 서버를 사용하여 파일을 제공합니다. :doc:’/how to/static files/deployment’에서는 정적 파일에 대한 몇 가지 일반적인 배포 전략을 다룹니다.</p></li>\n</ol>\n</section>\n<section id=\"learn-more\">\n<h2>추가사항<a class=\"heading-anchor\" href=\"#learn-more\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>이 문서에서는 기본 사항 및 몇 가지 일반적인 사용 패턴을 다룹니다. :mod:’django.contrib.static files’에 포함된 모든 설정, 명령, 템플릿 태그 및 기타 항목에 대한 자세한 내용은 :doc:’static files reference’를 참조하십시오.</p>\n</section>","rootId":"how-to-manage-static-files-e-g-images-javascript-css","toc":[{"title":"정적 파일을 구성하는 중입니다.","anchor":"configuring-static-files","children":[]},{"title":"개발 중에 정적 파일을 제공합니다.","anchor":"serving-static-files-during-development","children":[]},{"title":"개발 중에 사용자가 업로드한 파일을 제공합니다.","anchor":"serving-files-uploaded-by-a-user-during-development","children":[]},{"title":"테스트중","anchor":"testing","children":[]},{"title":"배치","anchor":"deployment","children":[]},{"title":"추가사항","anchor":"learn-more","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to guides","url":"/ko/5.2/howto/"}],"prev":{"docname":"howto/custom-template-tags","title":"커스텀 템플릿 태그 및 필터를 만드는 방법","url":"/ko/5.2/howto/custom-template-tags/"},"next":{"docname":"howto/logging","title":"로깅 구성 및 사용 방법","url":"/ko/5.2/howto/logging/"},"formats":{"html":"/ko/5.2/howto/static-files/","markdown":"/ko/5.2/howto/static-files.md","json":"/ko/5.2/howto/static-files.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/howto/static-files/index.txt","official":"https://docs.djangoproject.com/ko/5.2/howto/static-files/","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"]}