정적 파일 관리하기(이미지, 자바스크립트, CSS 등)¶
Websites generally need to serve additional files such as images, JavaScript,
or CSS. In Django, we refer to these files as “static files”. Django provides
django.contrib.staticfiles to help you manage them.
이 페이지에서는 이러한 정적 파일을 서비스하는 방법에 대해 설명합니다.
정적 파일을 구성하는 중입니다.¶
“django.contrib.static files”가 다음 설정에 포함되도록 하십시오.
INSTALLED_APPS.설정 파일에서 다음을 정의합니다.:setting:STATIC_URL, 예를 들어:
STATIC_URL = "static/"
In your templates, use the
statictemplate tag to build the URL for the given relative path using the configuredstaticfilesSTORAGESalias.{% load static %} <img src="{% static 'my_app/example.jpg' %}" alt="My image">
정적 파일을 앱의 “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’는 정적 파일을 한 디렉토리로 수집하여 쉽게 제공할 수 있도록 편리한 관리 명령을 제공합니다.
: setting:’을 설정합니다.STATIC_ROOT’ 설정은 다음과 같이 이러한 파일을 제공할 디렉토리로 설정합니다.
STATIC_ROOT = "/var/www/example.com/static/"
Run the
collectstaticmanagement command:$ python manage.py collectstatic
그러면 정적 폴더의 모든 파일이 :seting:’로 복사됩니다.STATIC_ROOT’ 디렉토리입니다.
선택한 웹 서버를 사용하여 파일을 제공합니다. :doc:’/how to/static files/deployment’에서는 정적 파일에 대한 몇 가지 일반적인 배포 전략을 다룹니다.
추가사항¶
이 문서에서는 기본 사항 및 몇 가지 일반적인 사용 패턴을 다룹니다. :mod:’django.contrib.static files’에 포함된 모든 설정, 명령, 템플릿 태그 및 기타 항목에 대한 자세한 내용은 :doc:’static files reference’를 참조하십시오.