collectstatic 명령 수행 시에, settings.STATICFILES_DIRS

 
Chinseok Lee

collectstatic 명령 수행 시에, settings.STATICFILES_DIRS 에 지정된 경로의 유무에 유의하세요.

https://www.facebook.com/groups/askdjango/permalink/1329469943735212/


Chinseok
python manage.py collectstatic 를 수행할 때,

django app 디렉토리의 static 경로와 settings.STATICFILES_DIRS 에 지정된 경로에서 static 파일을 수집합니다.

django app 디렉토리에 static 디렉토리가 없어도 무방하지만,
settings.STATICFILES_DIRS 에 지정된 경로의 디렉토리가 없을 경우 os.listdir(path) 호출을 통해 FileNotFoundError 예외가 발생하고, 명령이 중단됩니다.

이는 git 을 통한 배포에서 주로 발생합니다. git 에서는 빈 디렉토리는 git 관리대상에서 제거되기 때문이죠. 디렉토리만 생성하고 static 파일을 채워넣지 않은 경우인 거죠.

django 에서 해당 경로가 없을 경우, 예외를 발생시키지 않고, skip 처리해줘도 좋을 텐데 말이죠. -_-a

settings.py 에 다음과 같은 코드를 넣어서, 배포 시에 디렉토리가 없다면 생성하도록 해줄 수도 있겠습니다.

# settings.py
for path in STATICFILES_DIRS:
… if not os.path.exists(path):
……. os.makedirs(path)

참고하세요. 🙂

Advertisements