# Django 6.0.7 문서

# 정적 파일 관리하기(이미지, 자바스크립트, CSS 등)

일반적으로 웹 사이트에는 이미지, JavaScript 또는 CSS와 같은 추가 파일이 필요합니다. Django에서는 이러한 파일을 “static files”라고 합니다. Django는 이러한 파일을 관리할 수 있도록 :mod:`django.contrib.staticfiles`를 제공합니다.

이 페이지에서는 이러한 정적 파일을 서비스하는 방법에 대해 설명합니다.

## 정적 파일을 구성하는 중입니다.

1. “django.contrib.static files”가 다음 설정에 포함되도록 하십시오. `INSTALLED_APPS`.

2. 설정 파일에서 다음을 정의합니다.:setting:STATIC_URL, 예를 들어:

       STATIC_URL = "static/"

3. 템플릿에서 `static` 템플릿 태그를 사용하여 설정된 `staticfiles` `STORAGES` 별칭을 사용해 주어진 상대 경로의 URL을 생성합니다.

       {% load static %}
       <img src="{% static 'my_app/example.jpg' %}" alt="My image">

4. 정적 파일을 앱의 “static” 폴더에 저장합니다. 예를 들어 다음과 같습니다.``my_app/static/my_app/example.jpg``.

파일을 제공합니다.

이러한 구성 단계 외에도 정적 파일도 실제로 서비스해야 합니다.

개발 중에 :mod:’django.contrib.static files’를 사용할 경우 :설정::djadmin:’runserver’에 의해 자동으로 수행됩니다.DEBUG는 “True”로 설정되어 있습니다(func:”django.contrib.static files” 참조).view.serve’)를 입력합니다.

이 방법은 **총적으로 비효율적**이며 아마도 **불안한**이므로 **운영에 적합하지 않습니다*.

프로덕션 환경에서 정적 파일을 서비스하기 위한 적절한 전략은 :doc:’/how to/static files/deployment’를 참조하십시오.

프로젝트에 특정 앱에 연결되지 않은 정적 자산도 있을 수 있습니다. 앱 내에서 “static/” 디렉토리를 사용하는 것 외에도 디렉토리 목록(:seting:”)을 정의할 수 있습니다.Django가 정적 파일도 찾을 수 있는 설정 파일의 STATICFILES_DIRS)입니다. 예를 들어 다음과 같습니다.

    STATICFILES_DIRS = [
        BASE_DIR / "static",
        "/var/www/static/",
    ]

:설정:’에 대한 설명서를 참조하십시오.정적 파일_입니다.”정적 파일”이 당신의 파일을 어떻게 찾는지에 대한 자세한 내용은 FINDER의 설정입니다.

정적 파일 네임스페이싱

이제 정적 파일을 ``my_app/static/”에 직접 넣어도 (또 다른 ``my_app” 서브디렉토리가 아니라) 벗어날 수 있을지 모르지만, 실제로는 좋지 않은 생각일 것입니다. Django는 이름이 일치하는 첫 번째 정적 파일을 사용하며, different 애플리케이션에서 동일한 이름의 정적 파일이 있는 경우 Django는 이 파일을 구별할 수 없습니다. 우리는 Django를 제대로 가리킬 수 있어야 하며, 이것을 확실히 하기 위한 최선의 방법은 이름 간격*을 정하는 것입니다. 즉, 이러한 정적 파일을 애플리케이션 자체용으로 명명된 *또 다른 디렉토리에 넣습니다.

:seting:’에서 정적 자산의 네임스페이스를 지정할 수 있습니다.staticfiles_DIRS’는 다음과 같이 지정합니다.ref:’prefixs’.

## 개발 중에 정적 파일을 제공합니다.

위에서 설명한 바와 같이 :mod:’django.contrib.static files’를 사용하는 경우 :설정: :djadmin:’runserver’는 자동으로 이 작업을 수행합니다.DEBUG는 “True”로 설정되어 있습니다. “django.contrib.static files”가 없는 경우 : setting:”으로 설정합니다.설치되었습니다.APPs’에서는 :func:’django’를 사용하여 정적 파일을 수동으로 제공할 수 있습니다.정적이죠.의견을 제시합니다.

이것은 생산용으로 적합하지 않습니다! 일반적인 배포 전략은 :doc:’/how to/static-files/deploy’를 참조하십시오.

예를 들어, :setting:`STATIC_URL`이 ``static/``로 정의된 경우, ``urls.py``에 다음 조각을 추가하여 이를 수행할 수 있습니다:

    from django.conf import settings
    from django.conf.urls.static import static

    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

참고

이 도우미 함수는 디버그 모드에서만 작동하며 주어진 접두사가 로컬(예: `static/`)이고 URL(예: `http://static.example.com/`)이 아닌 경우에만 작동합니다.

또한 이 도우미 기능은 실제 :seting:’만 제공합니다.STATIC_ROOT’ 폴더. :mod:’django.contrib.static files’와 같은 정적 파일 검색을 수행하지 않습니다.

마지막으로 정적 파일은 WSGI 응용 프로그램 계층에서 래퍼를 통해 제공됩니다. 결과적으로 정적 파일 요청은 일반적인 :doc:`미들웨어 체인 </topics/http/middleware>`을 통과하지 않습니다.

## 개발 중에 사용자가 업로드한 파일을 제공합니다.

개발 중에:설정:에서 사용자가 업로드한 미디어 파일을 제공할 수 있습니다.’MEDIA_ROOT’는 :func:’django’를 사용합니다.정적이죠.의견을 제시합니다.

이것은 생산용으로 적합하지 않습니다! 일반적인 배포 전략은 :doc:’/how to/static-files/deploy’를 참조하십시오.

예를 들어, :setting:`MEDIA_URL`이 ``media/``로 정의된 경우, 다음 조각을 :setting:`ROOT_URLCONF`에 추가하여 이를 수행할 수 있습니다:

    from django.conf import settings
    from django.conf.urls.static import static

    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

참고

이 도우미 함수는 디버그 모드에서만 작동하며 주어진 접두어가 로컬(예: `media/`)이고 URL(예: `http://media.example.com/`)이 아닌 경우에만 작동합니다.

## 테스트중

내장된 테스트 클라이언트 대신 실제 HTTP 요청을 사용하는 테스트를 실행하는 경우(즉, 내장된 :class를 사용하는 경우):”LiveServerTestCase >django.test입니다.’라이브서버 테스트 사례’) 정적 자산은 콘텐츠의 나머지 부분에 제공되어야 테스트 환경이 가능한 한 충실하게 실제 데이터를 재현할 수 있지만 ``라이브서버 테스트 사례”는 매우 기본적인 정적 파일 서비스 기능만 갖추고 있습니다. 정적인 파일(static files) 애플리케이션의 파인더 기능에 대해서는 알지 못하며 정적인 내용은 이미 다음과 같은 설정으로 수집되었다고 가정합니다.STATIC_ROOT’입니다.

이 때문에 “정적 파일”은 자체 클래스인 “django.contrib.static files.testing”을 제공합니다.StaticLiveServer TestCase’는 이러한 테스트를 실행하는 동안 모든 자산을 “DEBUG @ True”로 개발 시 얻은 것과 매우 유사한 방식으로 투명하게 처리할 수 있는 내장형 테스트 사례의 하위 클래스로서, 즉 “staticadmin:”collectstatic”을 먼저 사용할 필요가 없습니다.

## 배치

:mod:’django.static files’는 정적 파일을 한 디렉토리로 수집하여 쉽게 제공할 수 있도록 편리한 관리 명령을 제공합니다.

1. : setting:’을 설정합니다.STATIC_ROOT’ 설정은 다음과 같이 이러한 파일을 제공할 디렉토리로 설정합니다.

       STATIC_ROOT = "/var/www/example.com/static/"

2. `collectstatic` 관리 명령을 실행합니다.

       $ python manage.py collectstatic

   그러면 정적 폴더의 모든 파일이 :seting:’로 복사됩니다.STATIC_ROOT’ 디렉토리입니다.

3. 선택한 웹 서버를 사용하여 파일을 제공합니다. :doc:’/how to/static files/deployment’에서는 정적 파일에 대한 몇 가지 일반적인 배포 전략을 다룹니다.

## 추가사항

이 문서에서는 기본 사항 및 몇 가지 일반적인 사용 패턴을 다룹니다. :mod:’django.contrib.static files’에 포함된 모든 설정, 명령, 템플릿 태그 및 기타 항목에 대한 자세한 내용은 :doc:’static files reference’를 참조하십시오.