STATICFILES_DIR, STATIC_ROOT 및 MEDIA_ROOT의 차이점
이 세 가지 정적 URL의 차이점은 무엇입니까?
제 말이 맞는지 잘 모르겠습니다. 저는 다음을 사용하고 있습니다.MEDIA_ROOT
사진을 ( 업드한사를기저하장통해(진로통를)))models.ImageField()
)
하고 JS에서 JS 스크립트를 생성했습니다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
안 되나요?
발전
STATIC_ROOT
개발 중에는 쓸모가 없습니다. 배포에만 필요합니다.
에 개발중에중STATIC_ROOT
아무것도 하지 않습니다.설정할 필요도 없습니다.앱의 에서 정적 파일을 (Django 각는내찾습파다니일을정적서에리터렉의앱디(▁d▁inside다찾습니▁files▁static▁each).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
모든 앱의 을 그리장고당가지고있는모든앱다것입니복파사할일을에 복사할 것입니다./some/folder/
.
정적 파일에 대한 추가 디렉터리
STATICFILES_DIRS
의 추가 디렉터리를 포함하는 데 사용됩니다.collectstatic
를 들어,는 장고를 인식하지 못합니다./myProject/static/
직접 포함할 수 있습니다.
예
STATIC_URL = '/static/'
if not DEBUG:
STATIC_ROOT = '/home/django/www-data/example.com/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static/'),
]
이러한 설정은 Django 설명서에서 확인할 수 있습니다.다음은 설명서의 정의와 인용문입니다.
MEDIA_ROOT
는 를사여파업폴더다니입로한드를 사용하여 입니다.FileField
갈 겁니다.사용자가 업로드한 파일을 저장할 디렉터리의 절대 파일 시스템 경로입니다.
STATIC_ROOT
는 정적 입니다.manage.py collectstatic
로, " " " " " " 입니다.
collectstatic
배포를 위해 정적 파일을 수집합니다.에 약에만.
staticfiles
collectstatic
management 명령은 정적 파일을 이 디렉터리로 수집합니다.사용에 대한 자세한 내용은 정적 파일 관리 방법을 참조하십시오.STATICFILES_DIRS
Django가 추가 정적 파일을 검색하는 폴더 목록입니다.static
설치된 각 앱의 폴더.이 설정은 다음과 같은 경우 정적 파일 앱이 이동할 추가 위치를 정의합니다.
FileSystemFinder
Finder가 활성화되었습니다. 예를 들어, 사용자가collectstatic
또는findstatic
관리 명령을 사용하거나 정적 파일 서빙 보기를 사용합니다.
설정에서 다음을 수행해야 합니다.
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__)))
기본 Django에 정의된 대로settings.py
지금이다.
사이의 차이STATICFILES_DIRS
그리고.STATIC_ROOT
그STATICFILES_DIRS
정적 파일이 있는 다른 디렉터리(앱 디렉터리일 필요는 없음)를 포함할 수 있으며 이러한 정적 파일은 실행 시 STATIC_ROOT에 수집됩니다.collectstatic
그러면 이러한 정적 파일이 웹 서버에서 제공되고 STATIC_ROOT에서 제공됩니다.
이 있는 한 후 STATIC_ROOT 파일을 STATIC_ROOT 디렉토리에 .STATICFILES_DIRS
.당신의.STATIC_ROOT
디렉터리는 비어 있어야 하며 모든 정적 파일은 해당 디렉터리에 수집되어야 합니다.
MEDIA_ROOT
여기서 미디어 파일은 업로드된 모든 파일로 이동합니다.: 예지이, 파일
class Media:
js = ('/admin/custom.js', )
하지만 효과가 없습니다.404 던지기 오류를 찾을 수 없습니다.
404 오류는 부분적으로 파일 경로의 선행 슬래시 때문입니다.
언급URL : https://stackoverflow.com/questions/24022558/differences-between-staticfiles-dir-static-root-and-media-root
'programing' 카테고리의 다른 글
파일 또는 어셈블리 시스템을 로드할 수 없습니다.런타임, 버전=4.1.2.0 (0) | 2023.08.19 |
---|---|
Restsharp를 사용하여 파일을 다운로드하는 방법 (0) | 2023.08.19 |
AJAX 응답을 기다리는 동안 이미지를 로드하려면 어떻게 해야 합니까? (0) | 2023.08.14 |
동일한 사이트 cookie 속성으로 CSRF 차단 (0) | 2023.08.14 |
Swift에서 x분마다 무언가 하기 (0) | 2023.08.14 |