How to manage static files (e.g. images, JavaScript, CSS)¶
웹 사이트는 일반적으로 이미지, JavaScript 또는 CSS와 같은 추가 파일을 제공해야 합니다. Django에서는 이러한 파일을 “static files”라고 합니다. Django는 :mod:’django.contrib.static files’를 제공하여 파일 관리를 도와줍니다.
이 페이지에서는 이러한 정적 파일을 서비스하는 방법에 대해 설명합니다.
정적 파일을 구성하는 중입니다.¶
“django.contrib.static files”가 다음 설정에 포함되도록 하십시오.
INSTALLED_APPS
.설정 파일에서 다음을 정의합니다.:setting:STATIC_URL, 예를 들어:
STATIC_URL = 'static/'
템플릿에서 :ttag:’static’ 템플릿 태그를 사용하여 구성된 를 사용하여 지정된:setting:STATICFILES_STORAGE.에 대한 URL을 빌드합니다.
{% 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’를 참조하십시오.
For example, if your STATIC_URL
is defined as static/
, you can
do this by adding the following snippet to your 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)
참고
This helper function works only in debug mode and only if
the given prefix is local (e.g. static/
) and not a URL (e.g.
http://static.example.com/
).
또한 이 도우미 기능은 실제 :seting:’만 제공합니다.STATIC_ROOT’ 폴더. :mod:’django.contrib.static files’와 같은 정적 파일 검색을 수행하지 않습니다.
Finally, static files are served via a wrapper at the WSGI application layer. As a consequence, static files requests do not pass through the normal middleware chain.
개발 중에 사용자가 업로드한 파일을 제공합니다.¶
개발 중에:설정:에서 사용자가 업로드한 미디어 파일을 제공할 수 있습니다.’MEDIA_ROOT’는 :func:’django’를 사용합니다.정적이죠.의견을 제시합니다.
이것은 생산용으로 적합하지 않습니다! 일반적인 배포 전략은 :doc:’/how to/static-files/deploy’를 참조하십시오.
For example, if your MEDIA_URL
is defined as media/
, you can do
this by adding the following snippet to your 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)
참고
This helper function works only in debug mode and only if
the given prefix is local (e.g. media/
) and not a URL (e.g.
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/"
:djadmin:’collectstatic’ 관리 명령을 실행합니다.
$ python manage.py collectstatic
그러면 정적 폴더의 모든 파일이 :seting:’로 복사됩니다.STATIC_ROOT’ 디렉토리입니다.
선택한 웹 서버를 사용하여 파일을 제공합니다. :doc:’/how to/static files/deployment’에서는 정적 파일에 대한 몇 가지 일반적인 배포 전략을 다룹니다.
추가사항¶
이 문서에서는 기본 사항 및 몇 가지 일반적인 사용 패턴을 다룹니다. :mod:’django.contrib.static files’에 포함된 모든 설정, 명령, 템플릿 태그 및 기타 항목에 대한 자세한 내용은 :doc:’static files reference’를 참조하십시오.