[장고]

[Django] Static 파일 관리하기

danhan 2022. 6. 30. 12:26

Static 파일이란

정적 파일은 HTML을 제외하고 웹 페이지를 렌더링할 때 필요한 추가 파일들이다.

웹 서버에 미리 저장되어 있어 css, image 파일 같이 컨텐츠가 고정되어있고 사용자의 요청에 따라 변하지 않는다.

정적 파일에는 static파일과 media파일이 있는데, static 파일은 개발자가 미리 준비한 데이터이고, media 파일은 사용자가 업로드한 데이터이다.

Static 파일 생성

app 디렉토리 안에 static 디렉토리를 생성한다.

css, js, img 등 필요한 static 파일들을 저장한다.

Static 경로 설정

어디에 static 파일이 저장되어 있는지 장고에게 위치를 알려주어야한다.

STATIC_URL을 '/static/'로 설정해 ‘/static/’ 경로로 요청이 들어오면 static 파일로 처리하도록 한다.

STATIC_URL = '/static/'

다음으로 STATICFILES_DIRS에 static 파일 경로를 알려준다.

STATICFILES_DIRS = [
	# base 디렉토리의 static 경로
	BASE_DIR / 'static',
	os.path.join(BASE_DIR, 'staticapp', static'),
]

Static 파일 사용하기

static 파일들을 사용하기 위해 파일 상단에 {% load static %} 태그를 명시해야한다.

여기서 {% %}는 장고의 Template 언어로 html, css, js 안에서 장고의 기능을 사용할 수 있게 해준다.

staatic 파일을 가져올 때는 "{% static 'path' %}”를 적어 가져온다.

# static 파일을 사용할 html 파일

# myproject/setting.py에 적어준 STATICFILES_DIRS 아래의 'static'파일을 이 html에 로드해라 
{% load static %}

<!DOCTYPE html>
<head>
	# static 파일 중 특정 파일을 가져오고 싶을 때 href="{% static 'path' %}"
	<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
</head>

static 파일 모으기

프로젝트를 배포하기 전에 흩어져 있던 static 파일들을 모아주어야한다.

STATIC_ROOT에 파일을 모을 경로를 설정하고 python manage.py collectstatic 를 명령한다.

이 작업을 통해 각 app에 흩어져 있던 Static 파일들이 STATIC_ROOT 디렉토리로 복사된다.

# 모든 static 파일들을 모아줄 경로로 배포 시에 설정한다.
STATIC_ROOT = os.path.join('staticfiles')
# 이후 $ python manage.py collectstatic 명령어를 치면 BASE 디렉토리 아래 staticfiles 폴더가 생성된다.

정리

정적 파일

  • static : 개발자가 미리 준비한 데이터
  • media : 사용자가 업로드한 데이터

static 파일 관리 - setting.py

  • STATIC_URL - STATIC 파일을 제공할 url
  • STATICFILES_DIRS - STATIC 파일들의 경로 작성
  • STATIC_ROOT - STATIC 파일들을 복사하여 모아 놓을 경로
# app/setting.py
STATIC_URL = '/static/'

STATICFILES_DIRS = [
	# base 디렉토리의 static 경로
	BASE_DIR / 'static',
	os.path.join(BASE_DIR, 'staticapp', static'),
]

'[장고]' 카테고리의 다른 글

[Django] Template 상속  (0) 2022.06.30
[Django] URL 매핑 - include를 이용한 url 계층 관리  (0) 2022.06.30
[Django] 장고 처음 시작하기  (0) 2022.06.30