티스토리 뷰
서론
Django에서 static 파일들을 전송할 때 localhost에서는 아무 문제 없을 수도 있지만, 실제 배포시에는 static 파일을 전달할 수 없기 때문에 이런 static 파일들을 모아서 웹 서버에서 전달해야 합니다. 이때 static 파일들을 모으는 방법을 소개합니다.
본론
static
클라이언트에게 전달되는 변하지 않는(정적인) 파일들을 통칭합니다. 예를 들어 css, js, img 등이 해당됩니다.
settings.py
static 파일들을 모으거나 사용하기 위해서는 settings.py에 설정을 해주어야 합니다.
STATIC_URL
Django Template에서 static 태그를 사용했을 경우에 주어지는 기본 url을 의미합니다.
예제
# settings.py
STATIC_URL = 'static/'
<!--some_django_template_page.html-->
{% load static %}
<img src="{% static 'someapp/some_picture.png' %}" alt="some picture" />
위와 같이 settings.py에 STATIC_URL을 설정한 경우에 Django Template에서 static 태그를 사용한다면 실제로 클라이언트가 요청하게 되는 주소는 다음과 같습니다.
myproject/static/someapp/some_picture.png
STATICFILES_DIRS
static 파일이 있는 디렉토리들을 나타냅니다. 리스트 형태로 저장되기 때문에 [] 혹은 ()으로 디렉토리 경로를 저장합니다. 나중에 static 파일들을 하나로 모을 때도 해당 디렉토리들에서 가져옵니다.
예제
static 파일을 불러오기 위해서 해당 디렉토리에 파일을 저장해 두어야 합니다. STATIC_URL 예제에서 이미지 파일의 소스로 someapp/some_picture.png 을 사용했습니다. 이때 some_picture.png 파일은 someapp 디렉토리 안에 존재해야 합니다.
주의:
myproject/static/someapp/some_picture.png에서 불러온다고 해서 프로젝트 폴더 안에 static/someapp/some_picture.png를 만들면 안 불러와집니다.
STATIC_ROOT
static 파일들을 모아주는 경로입니다. Django로 서버를 배포할 때 static 파일들은 클라이언트에게 전달되지 않습니다. 만약 된다고하면 localhost에서 테스트하고 있는 것은 아닐까 싶습니다.
그래서 Nginx와 같은 웹 서버를 통해 static 파일을 전달하게 되는데 이때 STATIC_ROOT로 정의한 디렉토리로 파일들을 모아서 Nginx로 배포할 수 있습니다.
static 파일 모으기
static root와 staticfiles_dirs가 설정되어 있다면 아래 명령어로 Django 배포 시에 필요한 모든 static 파일들을 가져올 수 있습니다.
python manage.py collectstatic

결론
django에서 static 파일들을 사용하고 모으는 방법에 대해서 알아보았습니다.
'개발자 > 파이썬(Python)' 카테고리의 다른 글
| [Django] Docker 컨테이너에서 createsuperuser 사용 (0) | 2024.01.17 |
|---|---|
| [Django] Django와 MySQL 혹은 MariaDB Docker로 연결 (0) | 2024.01.17 |
| [Django] Docker로 Django 배포하기 (0) | 2024.01.15 |
| [Django] CSV 파일 전송 뷰 만들기 (1) | 2024.01.03 |
| [Django] AUTH_USER_MODEL과 get_user_model() (0) | 2024.01.01 |
