django [Django 14] Static 파일

2017.01.28 23:55

졸리운_곰 조회 수:794

 

1. Static 파일

웹사이트는 일반적으로 자바스크립트, CSS, 이미지 등의 파일들을 사용하는데, 이러한 파일들을 Django 에서는 Static 파일이라 부른다. 이러한 Static 파일들을 체계적으로 관리하기 위하여 일반적으로 Django 프로젝트 홈 디렉토리 (settings.py에서의 BASE_DIR) 밑에 "static" 이라는 서브 폴더를 만들어 그곳에 static 파일들을 넣는다. 아래 그림은 /static 폴더 안에 리소스 별 서브폴더를 만들어 static 파일들을 관리하는 예를 보여주는 것이다.

static 폴더에 파일들을 넣고 사용하기 위해서는 settings.py 에 하나의 셋팅을 추가해 주어야 한다. 즉, settings.py 파일에서 아래와 같이 static 파일들을 찾는 경로를 나타내는 STATICFILES_DIRS 라는 변수를 설정해야 한다. 경로가 여러 개일 수 있지만, 여기서는 BASE_DIR/static 폴더 하나를 지정하였다.

1
2
3
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

2. Django App의 Static 폴더

필요에 따라 각각의 Django App마다 App별 정적 파일을 담는 별도의 "static" 폴더를 둘 수도 있다. 이를 위해서는 settings.py 파일 안에 STATICFILES_FINDERS을 설정하고 그 값으로 AppDirectoriesFinder을 추가해 주어야 한다. 각 App의 static 폴더는 그 폴더명을 "static" 으로 지정해 주어야 하며, 일반적으로 App명/static/App명 과 같이 각 App의 static 폴더 안에 다시 "App명"" 서브폴더를 둘 것을 권장한다. 이는 Deployment 시 collectstatic 을 실행할 때, 각 static 폴더 밑의 내용을 그대로 복사하므로 동명 파일들이 충돌하지 않게 하기 위함이다.

1
2
3
4
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

참고로 위의 FileSystemFinder는 STATICFILES_DIRS 에 있는 경로들로부터 정적 파일을 찾을 수 있게 한다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

3. Static 파일 사용

Static 파일들은 주로 템플릿에서 사용되는데, settings.py 설정을 마친 후 static 파일들을 사용하기 위해서는, 템플릿 상단에 {% load staticfiles %} 태그를 먼저 명시해 주어야 한다. 그리고, 실제 static 파일을 가리키기 위해서는 아래 link 태그에서 보이듯이 "{% static '리소스명' %}" 와 같이 static 템플릿 태그를 사용하여 해당 리소스를 지정한다. 이때 리소스명에는 "static/" 폴더명 다음의 경로만 지정한다.

{% load staticfiles %}

<html lang="en">
<head>
    <link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
</head>
<body>
</body>
</html>

4. collectstatic

Django 프로젝트를 Deploy할 때, 흩어져 있는 Static 파일들을 모아 특정 디렉토리로 옮기는 작업을 할 수 있는데, 이 작업은 위해 "./manage.py collectstatic" 명령을 사용한다. 즉, collectstatic 명령은 Django 프로젝트와 각 Django App 안에 있는 Static 파일들을 settings.py 파일 안에 정의되어 있는 STATIC_ROOT 디렉토리로 옮기는 작업을 수행한다.

예를 들어, settings.py 에 다음과 같이 STATIC_ROOT 가 설정되어 있을 때,

STATIC_ROOT = '/var/www/myweb_static'

아래 collectstatic 명령은 모든 정적 파일들을 /var/www/myweb_static 디렉토리에 복사해 준다.

(venv1) /var/www/myweb $ ./manage.py collectstatic

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
22 [파이썬으로 웹 크롤러 만들기] 크롤링 시작하기(2/3) file 졸리운_곰 2017.02.16 709
21 [파이썬으로 웹 크롤러 만들기] 크롤링 시작하기(1/3) file 졸리운_곰 2017.02.16 772
20 Python으로 RESTAPI 이용하기 졸리운_곰 2017.02.11 462
19 [Python] 네이버 블로그 xml-rpc 클라이언트 만들기 – 1 졸리운_곰 2017.01.07 563
18 웹 크롤링 by python file 졸리운_곰 2016.12.14 1451
17 [Scrapy] 웹사이트 크롤링해서 DB 저장 하기(분양정보수집사례) file 졸리운_곰 2016.11.29 740
16 [Scrapy] 웹사이트 크롤링해서 파일 저장 하기(분양정보수집사례) file 졸리운_곰 2016.11.29 1721
15 [python] BeautifulSoup으로 웹에 있는 데이터 긁어오기 졸리운_곰 2016.11.15 586
14 [python] httplib — HTTP protocol client¶ 졸리운_곰 2016.11.15 548
13 python torrent 자동 다운로드 : How to automatically search and download torrents with Python and Scrapy 졸리운_곰 2016.11.02 875
12 Apache와 Python 연동하기 졸리운_곰 2016.10.16 1612
11 HTML Scraping [파이썬 웹 스크래핑 간단 메뉴얼] 졸리운_곰 2016.07.30 766
10 Anonymous Web Scraping using Python and Tor file 졸리운_곰 2016.05.04 1284
9 Using TOR with Python file 졸리운_곰 2016.05.04 1911
8 Crawling anonymously with Tor in Python 졸리운_곰 2016.05.04 542
7 scrapy : 크롤링 해보기 file 졸리운_곰 2016.04.21 719
6 Python으로 공공데이터 오픈 API 활용하기 졸리운_곰 2016.01.14 1225
5 Title: HTML Scraper using pyhton 졸리운_곰 2015.09.01 400
4 위대한 LG SMART SMA LG 빅데이터 플랫폼 [파이썬 웹 크롤러] 웹 스파이더 file 졸리운_곰 2015.05.02 1154
3 위대한 LG SMART SMA LG 빅데이터 플랫폼 [소셜 웹 마이닝] 데이터 마이닝, 웹 마이닝 file 졸리운_곰 2015.05.02 775
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED