장고의 컬렉션 스태틱은 무슨 의미가 있습니까?
장고에서 관례는 앱에 특정한 모든 정적 파일(예: css, js)을 정적이라고 하는 폴더에 넣는 것입니다.구조는 다음과 같습니다.
mysite/
manage.py
mysite/ --> (settings.py, etc)
myapp/ --> (models.py, views.py, etc)
static/
인mysite/settings.py
소유자:
STATIC_ROOT = 'staticfiles'
명령을 실행하면 다음과 같습니다.
python manage.py collectstatic
다음 폴더를 만듭니다.staticfiles
루트 레벨에서 (같은 디렉토리)myapp/
)
이게 무슨 의미가 있습니까?제 모든 정적 파일의 복사본을 만드는 것이 아닌가요?
여러 앱의 정적 파일을 단일 경로로 수집
글쎄요, 하나의 장고 프로젝트는 여러 앱을 사용할 수 있기 때문에, 거기에 있는 동안 당신은 하나의 앱만 가지고 있습니다.myapp
실제로 그럴 수도 있습니다.myapp1
,myapp2
,기타
개별 앱 내부에서 단일 폴더로 복사하여 프런트 엔드 웹 서버(예: nginx)를 해당 단일 폴더로 가리킬 수 있습니다.STATIC_ROOT
여러 경로의 정적 파일을 제공하도록 웹 서버를 구성하는 대신 단일 위치에서 정적 파일을 제공합니다.
매니페스트 정적 파일 저장소를 사용하는 영구 URL
버전 관리를 위해 파일 이름에 MD5 해시가 추가되는 것에 대한 참고 사항:기본 동작의 일부가 아닙니다.collectstatic
,~하듯이settings.STATICFILES_STORAGE
기본값:StaticFilesStorage
(그렇게 하지 않는 것)
MD5 해시는 예를 들어 사용하도록 설정하면 시작됩니다.ManifestStaticFilesStorage
그 행동이 더해진다는 겁니다
이 저장소의 목적은 사용자 또는 타사 프록시 서버가 캐시하기 때문에 일부 페이지에서 여전히 해당 파일을 참조하는 경우에 대비하여 이전 파일을 계속 제공하는 것입니다.또한 배포된 파일에 Expires 헤더를 적용하여 이후 페이지 방문 시 로드 시간을 단축하려는 경우에도 매우 유용합니다.
장고 정적 파일은 여러 위치에 있을 수 있습니다.다음으로 제공되는 파일입니다./static/img/icon.png
많은 곳에서 올 수 있습니다.기본적으로:
FileSystemFinder
을 찾을 것입니다img/icon.png
각각의STATICFILES_DIRS
,AppDirectoriesFinder
을 찾을 것입니다img/icon.png
에서static
각 폴더의 하위 폴더INSTALLED_APPS
이를 통해 장고 관리자와 같은 라이브러리가 자신의 정적 파일을 앱에 추가할 수 있습니다.
이제: 이 기능은 실행할 경우에만 작동합니다.manage.py runserver
DEBUG=1을 사용합니다.라이브에서 장고 프로세스는 더 이상 정적 자산을 제공하지 않습니다.이것들을 제공하기 위해 장고를 사용하는 것은 비효율적일 것입니다, 그것을 위한 더 전문적인 도구들이 있습니다.
대신 다음과 같은 작업을 수행해야 합니다.
- 모든 앱에서 모든 정적 파일 찾기
- 모든 디렉토리를 포함하는 단일 디렉토리 구축
- 어딘가에 a 어가에업드로딘(a)).
static
또는 저장소의 )에 저장됩니다. - : nginx하여 "nginx"를 제공합니다.
/static/*
해당 디렉토리에서 직접 다른 요청을 장고로 리디렉션합니다.
collectstatic
는 이 디렉터리를 배포 스크립트에 직접 연결할 수 있도록 미리 준비된 스크립트입니다.
프로덕션 설치에서 영구 URL을 사용하려고 합니다.파일 내용이 변경되지 않는 한 URL은 변경되지 않습니다.
이것은 장고에서 웹 페이지를 열 때 고객이 컴퓨터에 잘못된 버전의 CSS 또는 JS 파일을 가지고 있는 것을 방지하기 위한 것입니다.Django 정적 파일은 파일 변경을 감지하고 그에 따라 URL을 업데이트하므로 CSS 또는 JS 파일이 변경되면 웹 브라우저에서 새 버전을 다운로드합니다.
이는 일반적으로 다음 기간 동안 파일 이름에 MD5 해시를 추가하여 수행됩니다.collectstatic
뛰다, 뛰다, 뛰다, 뛰다, 뛰다
편집: 여러 앱에 대한 관련 답변도 참조하십시오.
사이트 내에 여러 장고 앱이 있을 때 유용합니다.
collectstatic
그러면 모든 앱에서 정적 파일을 한 곳에 수집하여 프로덕션 환경에서 제공할 수 있습니다.
언급URL : https://stackoverflow.com/questions/34586114/whats-the-point-of-djangos-collectstatic
'programing' 카테고리의 다른 글
두 개의 다른 서버에서 테이블 조인 (0) | 2023.08.25 |
---|---|
자바스크립트에서 긴 정규식을 여러 줄로 분할하는 방법은 무엇입니까? (0) | 2023.08.20 |
[NSDate date]에서 현재 날짜를 가져오지만 시간을 오전 10시로 설정합니다. (0) | 2023.08.20 |
husky > 사전 커밋 후크 실패(바이패스하려면 --no-commit hook 추가) (0) | 2023.08.20 |
C#에서 쿼리 문자열을 업데이트하는 방법은 무엇입니까? (0) | 2023.08.20 |