일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬 알고리즘
- javascript
- PYTHON
- Baekjoon
- form
- es6
- Algorithm
- HTML
- c++
- java
- Django
- 알고리즘 문제
- 백준
- Git
- django ORM
- DRF
- react
- django rest framework
- js
- MAC
- API
- 파이썬
- web
- 장고
- CSS
- AWS
- django widget
- 알고리즘 풀이
- 알고리즘 연습
- 알고리즘
- Today
- Total
수학과의 좌충우돌 프로그래밍
[Django] static 파일 다루기 본문
Static 파일이란?
static 파일이란 js, css, image, font 등과 같이 개발자가 사전에 미리 서버에 저장 해둔 파일들을 말합니다. 정적인 파일들이라고 할 수 있습니다.
settings 에서의 설정
-
STATIC_URL
STATIC_URL = '/static/'
이미
settings
에 위와 같이 설정이 되어있습니다. 이를 통해 각static
파일에 대한 URL의 고정값을 설정할 수 있습니다. 예시를 들자면{% static '경로' %}
에 대해서 해당 URL 이STATIC_URL+'경로'
로 바뀌게 되고 이는 다시'/static/경로'
다음과 같이 바뀌게 되어 참조를 할 수 있습니다.
-
STATICFILES_DIRS
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'config', 'static') ]
개발자가 추가로 지정을 해주셔야 하는 부분입니다. 프로젝트 전반적으로 사용되는
static
경로가 어딘지 설정합니다.config
내에static
폴더를 추가로 만들어주었습니다.config 가 무엇인가요?
django-admin startproject 'project 이름'
다음과 같은 명령어로 project 를 생성하면
project 이름
폴더 안에 똑같은 폴더가 또 있어서 혼란을 야기 합니다. 따라서config
라고 project 를 생성한 후 최상단의 폴더 이름을 바꿈으로서 이를 예방할 수 있습니다.
-
STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
각
static
파일들은 각자 다른 경로에 나눠져 있습니다. 왜냐하면 프로젝트 전반적으로 사용하는 파일들은STATICFILES_DIRS
에 담겨 있고, 각자의 app 안에는 app 에서 사용되는 파일들이 따로 모여있습니다. 배포를 하기 위해서는 이들을 하나의 디렉토리에 모아야 하는데 아래 명령어로 한 번에 모을 수 있습니다.python manage.py collectstatic
하지만 어디로 모을지는 따로 지정을 해줘야하고 그 경로가 바로
STATIC_ROOT
입니다.static
폴더를 따로 만들지 않더라도 지정한 경로에 만들어주고 그 안에 복사하여 담아줍니다.
templates 에서 사용
우선 사용하기 위해서 상단에 추가해줘야 할 것이 있습니다. static
을 사용하기 위해 이를 load 해줍니다.
{% load static %}
이후에는 다음과 같이 img, css, js 등 여러 정적 파일들을 불러올 수 있습니다.
{% static 'STATIC_URL 이후의 경로' %}
settings 의 경로가 바뀌었을 때
위에 보면
BASE_DIR
가 자주 등장합니다. settings 에서 기본 설정되어 있는 값으로서import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
다음과 같이 설정되어있습니다.
os.path.abspath(__file__)
은 현재 파일의 경로,dirname
은 그 상위 디렉토리를 의미합니다. 즉 settings 의 경로가 그 하위폴더로 바뀌게 된다면dirname
을 하나 더 추가하는 등 수정이 필요합니다. 그래야BASE_DIR
를 기본으로 돌아가는 static 설정들이 문제 없이 동작하겠죠?
'웹프로그래밍 > Django' 카테고리의 다른 글
[Django] CBV (1) CBV 와 Base Views (2) | 2019.08.06 |
---|---|
[Django] media 파일 업로드하기 (7) | 2019.07.30 |
[Django] json_script 를 이용한 효과적인 json parsing (1) | 2019.07.28 |
[Django] django-debug-toolbar 설치하기 (0) | 2019.07.26 |
[Django] 좋아요 기능 구현하기 (ajax 사용 x) (2) | 2019.07.23 |