정적 파일
응답할 때 별도의 처리 없이 파일 내용을 그대로 보여주면 되는 파일
사용자의 요청에 따라 내용이 바뀌는 것이 아니라 요청한 것을 그대로 보여주는 파일
예를 들어, 웹 사이트는 일반적으로 이미지, 자바 스크립트 또는 CSS와 같은 미리 준비된 추가 파일(움직이지 않는)을 제공해야 함
Django에서는 이러한 파일들을 “static file”이라 함
django.contrib.staticfiles 앱이 INSTALLED_APPS
에 있는지 확인
setting.py에 STATIC_URL
정의 (기본으로 정의되어 있음)
STATIC_URL = '/static/'
템플릿에서 static 템플릿 태그를 사용하여 static file이 있는 상대경로를 빌드
앱에 static file 저장하기 (my_app/static/my_app/sample.jpg
)
예시
article/static/articles/
경로에 이미지 파일 위치
<!-- articles/index.html -->
{% extends 'base.html' %}
{% load static %}
{% block content %}
<img src="{% static 'articles/sample.png' %}" alt="sample">
...
{% endblock %}
이미지 파일 위치 - articles/static/articles/images/
static file 기본 경로
app_name/static/
STATICFILES_DIRS
app/static/ 디렉토리 경로를 사용하는 것(기본 경로) 외에 추가적인 정적 파일 경로 목록을 정의하는 리스트
추가 파일 디렉토리에 대한 전체 경로를 포함하는 문자열 목록으로 작성되어야 함
예시
static/
경로에 CSS 파일 위치<!-- base.html -->
<head>
{% block css %}{% endblock %}
</head>
# settings.py
STATICFILES_DIRS = [
BASE_DIR / 'static',
]
<!-- articles/index.html -->
{% extends 'base.html' %}
{% load static %}
{% block css %}
<link rel="stylesheet" href="{% static 'style.css' %}">
{% endblock %}
/* static/style.css */
h1 {
color: crimson;
}
STATIC_ROOT
[참고] collectstatic
- 프로젝트 배포 시 흩어져있는 정적 파일들을 모아 특정 디렉토리로 옮기는 작업
# settings.py 예시 STATIC_ROOT = BASE_DIR / 'staticfiles'
$ python manage.py collectstatic