Django 개발 시 정적 파일 구성 매개변수 및 collectstatic
통상적으로 생산 상황에서 Django의 프로젝트 파일과 사이트의 정적 파일은 분리하여 저장할 수 있고 심지어 서로 다른 서버에 저장할 수 있다. 예를 들어 Django의 프로젝트 파일은 아리운 서버에 놓고 정적 파일은 칠우운에 저장할 수 있다.
모든 Django 프로젝트의 settings.py 파일의 맨 아래 주석에는 정적 파일 처리에 관한 공식 문서 주소가 있습니다.문서에서는 Django가 정적 파일을 처리하는 방법에 대해 자세히 설명합니다.
Django 1.9.5 버전의 settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
Django 1.11 버전의 settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
2 주요 프로세스
static 파일과 미디어 파일의 본질은 같고 이전의 Django 버전은 이 두 가지 유형을 합쳐서 처리했다.미디어는 주로 사용자를 대상으로 업로드한 파일이다.static는 프로젝트 개발 시 개발자가 제공한 것이다.
python manage.py collectstatic
upload_to
속성은 지정된 디렉토리에 업로드할 수 있습니다.python manage.py collectstatic
하면 static 디렉터리의 파일을 STATICROOT에 설정된 파일(static cdn)3 적절한 설정
3.1 project/settings.py
전체 코드는 다음과 같다.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media_cdn")
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATICFILES_DIRS
개발할 때 사용하는static 파일을 저장할 디렉터리를 설정합니다.
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
URL 변수
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
URL:
STATIC_URL
와 MEDIA_URL
는 해당 URL을 찾는 요청을 안내합니다.구체적인 URL 루트는 뒤에서 설정합니다.ROOT 변수
주의
BASE_DIR
는 manage.py
가 있는 목록을 가리킨다.import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
따라서
BASE_DIR
이 디렉터리에 폴더를 설정하면 예를 들어 설정templates
을 사용할 수 있다os.path.join(BASE_DIR, 'templates')
.TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
# ...
},
]
하지만 관리자에 설정하려면py가 있는 디렉터리 외에 다른 평행 동급 디렉터리가 있습니다.
우선
BASE_DIR
이 디렉터리의 상급 디렉터리를 얻습니다.os.path.dirname(BASE_DIR)
os.path.join()
연결을 사용하여 BASE_DIR
와 평행하는 디렉터리를 얻습니다STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media_cdn")
얻은 디렉터리 구조는
.
|-- media_cdn
| |-- car.jpg
| |-- landview.jpg
| `-- beach.jpg
|-- README.md
|-- requirements.txt
|-- project
| |-- db.sqlite3
| |-- __init__.py
| |-- manage.py
| |-- posts
| |-- static
| |-- templates
| `-- project
`-- static_cdn
|-- admin
|-- css
`-- vendor
3.2 project/urls.py
urls에 있습니다.py의 파일에 다음과 같은 내용을 추가하면 static과 미디어의 ROOT 디렉터리에 루트를 설정할 수 있습니다.
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
판단
if settings.DEBUG:
을 내린 것은 출시 이후 이런 ROOT 목록을 사용하지 않기 때문이다.DEBUG
의 상태는settings이다.py에서 제어# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
3.3 사용
collectstatic
위의 매개변수를 설정한 후 다음 명령을 실행할 수 있습니다.$ python manage.py collectstatic
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.