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.jsSTATIC_ROOT/admin/custom.js하지만 효과가 없습니다.오류를 수 . 404 던지기 오류입니다.
그리고 나서 나는 그것을 바꿉니다.STATIC_ROOTSTATICFILES_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_ROOTNginx는 당신의 장고 프로젝트에 대해 아무것도 모르고 정적 파일을 어디서 찾아야 하는지 모르기 때문에 편리해집니다.
그래서 당신이 설정합니다.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배포를 위해 정적 파일을 수집합니다.에 약에만.
staticfilescollectstaticmanagement 명령은 정적 파일을 이 디렉터리로 수집합니다.사용에 대한 자세한 내용은 정적 파일 관리 방법을 참조하십시오.STATICFILES_DIRSDjango가 추가 정적 파일을 검색하는 폴더 목록입니다.static설치된 각 앱의 폴더.이 설정은 다음과 같은 경우 정적 파일 앱이 이동할 추가 위치를 정의합니다.
FileSystemFinderFinder가 활성화되었습니다. 예를 들어, 사용자가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 |