Django에서 CSS, HTML, JS 파일을 관리하는 방법은 일반적으로 Static files를 사용한다.

setting.py 파일에서 정적 파일의 경로를 지정해줘야한다. 다음과 같이 설정하면 된다.
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'myapp/static'),
]
<!-- myapp/templates/myapp/index.html -->
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
</head>
<body>
<script src="{% static 'js/script.js' %}"></script>
</body>
</html>
위 코드블록에서 {% static 'js/script.js' %} 구문이 낯설다면 Django 템플릿 언어을 확인하는 것을 추천한다.
python manage.py collectstatic을 본적이 있을것이다.
이 명령어의 기능은 정적 파일을 한 곳에 모을때 사용한다.
정확한 이해를 위해 도서관을 예로 들어보자. 개발단계에 있을 때 사용되는 데이터들, 예를 들어 CSS, HTML, JS, IMG 등등을 도서라고 해보자. 개발단계에서는 collectstatic을 사용할 필요가 없다. 그래서 개발단계에는 집 안 방 곳곳에 책들이 흩어져 있다고 생각하면 된다. 어떤 책을 찾을때 비효율적이고 찾는데 시간이 많이 들지만, 아직 누군가에게 서비스하는 단계가 아니고 나만 사용하기 때문에 나만 상관없다면 그렇게 찾아도 그다지 상관 없을 것이다.
collectstaic을 사용하게되면 도서관에 도서들을 카테고리별로 잘 정리된 상태가 된다. 필요한 책을 효율적으로 찾을 수 있고 시간도 단축되며, 중복된 책도 없을 것이다. 이렇게 되면 배포 시 사용되는 데이터들을 서비스하게 좋은 상태가 될 것이다.
Django가 collectstatic을 사용하여 정적파일을 정리하는 메커니즘은 다음과 같다. 궁금하다면 읽어보자!
프로덕션 배포:
Django 개발 서버에서 테스트:
스태이징 환경:
CDN 사용 시:
STATIC_ROOT 경로 설정하기# settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')