STATICFILES_DIR, STATIC_ROOT 및 MEDIA_ROOT의 차이점
이 세 가지 정적 URL의 차이점은 무엇입니까?
내가 옳은지 잘 모르겠습니다. MEDIA_ROOT
업로드 한 사진을 저장 하는 데를 사용하고 있습니다 (를 통해 models.ImageField()
).
그러나 관리자와 admin.py
. 미디어를 아래와 같이 정의했습니다.
....
class Media:
js = ('/admin/custom.js', )
그리고 내 settings.py
:
....
STATIC_ROOT = "/home/user/project/django1/top/listing/static"
그리고 나는를 추가 custom.js
할 수 STATIC_ROOT/admin/custom.js
있지만 작동하지 않습니다. 404 찾을 수 없음 오류가 발생합니다.
그리고 나는 변경 STATIC_ROOT
에를 STATICFILES_DIRS
, 그리고 그것을 작동합니다!
....
STATICFILES_DIRS = "/home/user/project/django1/top/listing/static"
그래서 나는 여기서 무슨 일이 일어나고 있는지 이해하지 못합니다. 사실 STATIC_ROOT
과 의 차이점이 무엇인지 이해하지 못합니다 STATICFILES_DIRS
.
현재 아직 배포되지 않은 virtualenv를 통해 내 컴퓨터에서 Django를 테스트하고 있는데 STATIC_ROOT
작동하지 않는 이유 입니까 ??
이러한 설정은 Django 문서 에서 찾을 수 있습니다 . 다음은 문서에서 내 자신의 정의와 인용문입니다.
MEDIA_ROOT
을 사용하여 업로드 한 파일FileField
이 이동할 폴더 입니다.사용자가 업로드 한 파일을 보관할 디렉토리의 절대 파일 시스템 경로 입니다.
STATIC_ROOT
사용 후 정적 파일이 저장되는 폴더입니다.manage.py collectstatic
collectstatic
배포를 위해 정적 파일을 수집 할 디렉터리의 절대 경로 입니다.는 IF
staticfiles
의 contrib 응용 프로그램이 활성화 (기본값)collectstatic
관리 명령은이 디렉토리에 정적 파일을 수집합니다. 사용법에 대한 자세한 내용은 정적 파일 관리 방법을 참조하십시오.STATICFILES_DIRS
Django가static
설치된 각 앱 의 폴더를 제외한 추가 정적 파일을 검색 할 폴더 목록입니다 .이 설정은
FileSystemFinder
파인더가 활성화 된 경우 (예 :collectstatic
또는findstatic
관리 명령을 사용하거나 정적 파일 제공보기 를 사용하는 경우) staticfiles 앱이 통과 할 추가 위치를 정의합니다 .
설정에 다음이 있어야합니다.
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
# Make a tuple of strings instead of a string
STATICFILES_DIRS = ("/home/user/project/django1/top/listing/static", )
...어디:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
settings.py
이제 기본 Django에 정의 된대로 .
개발
STATIC_ROOT
개발 중에는 쓸모가 없으며 배포에만 필요합니다.
개발 중에는 STATIC_ROOT
아무것도하지 않습니다. 설정하지 않아도됩니다. Django는 각 앱의 디렉토리 ( myProject/appName/static
) 에서 정적 파일을 찾아 자동으로 제공합니다.
이것은 manage.py runserver
때에 의해 행해지는 마법 DEBUG=True
입니다.
전개
프로젝트가 시작되면 상황이 달라집니다. Django를 사용하여 동적 콘텐츠를 제공하고 정적 파일은 Nginx에서 제공 할 가능성이 높습니다. 왜? Nginx는 매우 효율적이고 Django의 워크로드를 줄일 수 있기 때문입니다.
곳이다 STATIC_ROOT
Nginx에 당신의 장고 프로젝트에 대해 아는하지 않는 한, 편리하게 어디 정적 파일을 찾을 모른다.
따라서 STATIC_ROOT = '/some/folder/'
Nginx에 /some/folder/
. 그런 다음 실행하면 manage.py collectstatic
Django는 필요한 모든 앱에서 정적 파일을 복사합니다 /some/folder/
.
정적 파일을위한 추가 디렉토리
STATICFILES_DIRS
찾을 추가 디렉토리 를 포함하는 데 사용됩니다 collectstatic
. 예를 들어 기본적으로 Django는 /myProject/static/
. 따라서 직접 포함 할 수 있습니다.
예
STATIC_URL = '/static/'
if not DEBUG:
STATIC_ROOT = '/home/django/www-data/site.com/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static/'),
]
Difference between STATICFILES_DIRS
and STATIC_ROOT
The STATICFILES_DIRS
can contain other directories (not necessarily app directories) with static files and these static files will be collected into your STATIC_ROOT when you run collectstatic
. These static files will then be served by your web server and they will be served from your STATIC_ROOT.
If you have files currently in your STATIC_ROOT that you wish to serve then you need to move these to a different directory and put that other directory in STATICFILES_DIRS
. Your STATIC_ROOT
directory should be empty and all static files should be collected into that directory.
MEDIA_ROOT
where media files ,all uploaded files goes. Example : Images, Files
ReferenceURL : https://stackoverflow.com/questions/24022558/differences-between-staticfiles-dir-static-root-and-media-root
'programing' 카테고리의 다른 글
파일이 'eof'에 있는지 확인하는 방법은 무엇입니까? (0) | 2021.01.16 |
---|---|
Java에서 JSON 객체가 비어 있는지 테스트하는 방법 (0) | 2021.01.16 |
int 배열을 문자열로 (0) | 2021.01.16 |
NSArray에서 최대 숫자 값 찾기 (0) | 2021.01.16 |
명령 줄 프롬프트의 현재 디렉터리를 줄이려면 어떻게해야합니까? (0) | 2021.01.16 |