첫 번째 장고 앱 작성하기, part 6¶
이 튜토리얼은 튜토리얼 5장에 이어서 시작합니다. 우리는 테스트 된 웹 설문조사 애플리케이션을 구축했으며, 이제 스타일 시트와 이미지를 추가 할 것입니다.
서버에서 생성 된 HTML을 제외하고, 웹 어플리케이션은 일반적으로 전체 웹 페이지를 렌더링하는 데 필요한 추가 파일 — 예:이미지, JavaScript 또는 CSS — 을 제공해야합니다. Django에서는 이러한 파일을 "정적 파일" 이라고 부릅니다.
소규모 프로젝트의 경우, 웹 서버가 정적 파일을 보관할 수 있기 때문에 큰 문제는 아닙니다. 그러나 더 큰 프로젝트 -- 특히 여러 응용 프로그램으로 구성된 프로젝트 -- 의 경우각 응용 프로그램에서 제공하는 여러 정적 파일 세트를 다루는 것이 까다로워지기 시작합니다.
이것이 django.contrib.staticfiles
의 목적입니다: 이것은 각 응용 프로그램(및 여러분이 지정한 다른 위치)의 정적 파일들을 프로덕션 환경에서 쉽게 제공 할 수있는 단일 위치로 수집합니다.
앱의 모양과 느낌을 원하는 대로 바꿔보세요.¶
먼저, polls
디렉토리에 static
디렉토리를 만듭니다. ``polls/templates/``안의 템플릿을 찾는 것과 비슷하게 정적 파일을 찾습니다.
Django의 STATICFILES_FINDERS
설정은 다양한 소스에서 정적 파일을 찾는 방법을 알고 있는 파인더 목록을 가지고 있습니다. 기본값 중 하나는 AppDirectoriesFinder
인데, INSTALLED_APPS
에서 "정적" 하위 디렉토리를 찾습니다, 방금 생성 한 polls
의 경우입니다. 관리 사이트는 정적 파일에 대해 동일한 디렉토리 구조를 사용합니다.
방금 생성 한 static
디렉토리 안에 polls
라는 또 다른 디렉토리를 만들고 그 안에 style.css
라는 파일을 만듭니다. 즉, 스타일 시트는 polls/static/polls/style.css
에 있어야합니다. AppDirectoriesFinder
정적 파일 파인더가 작동하는 방식에 따라 Django의 정적 파일을 polls/style.css
라고 간단하게 참조 할 수 있습니다. 이것은 템플릿 경로를 참조하는 것과 유사합니다.
정적 파일 네임스페이싱
템플릿과 마찬가지로, 정적 파일을 polls/static
에 직접 둘 수도 있습니다(polls
하위 디렉토리를 만들지 않고). 하지만 실제로는 좋지 않습니다. Django는 이름이 일치하는 첫 번째 정적 파일을 선택할 것입니다, 그런데 만약 다른 응용 프로그램에 같은 이름의 정적 파일이있는 경우에는 이들을 구별하지 못합니다. Django가 올바른 것을 가리킬 수 있게 해야합니다, 이것을 보장하는 가장 쉬운 방법은 네임스페이싱 입니다. 즉, 정적 파일을 응용 프로그램 자체의 다른 디렉토리에 두는 것입니다.
그 스타일 시트 (polls/static/polls/style.css
)에 다음 코드를 넣으십시오:
li a {
color: green;
}
다음으로, polls/templates/polls/index.html
의 맨 위에 다음을 추가하십시오:
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />
{% static %}
템플릿 태그는 정적 파일의 절대 URL을 생성합니다.
개발할 때 이것만 하면 됩니다. http://localhost:8000/polls/
를 새로 고침하면, 질문 링크가 녹색 (Django 스타일!) 인 것을 볼 수 있습니다. 이는 스타일 시트가 제대로 로드되었음을 의미합니다.
백그라운드 이미지를 추가합니다.¶
다음으로, 이미지 용 하위 디렉토리를 만듭니다. polls/static/polls/
디렉토리에 images
서브 디렉토리를 만듭니다. 이 디렉토리 안에 background.gif
라는 이미지를 넣으십시오. 즉, 이미지를 polls/static/polls/images/background.gif
에 넣으십시오.
그런 다음, 스타일 시트에 추가하십시오 (polls/static/polls/style.css
):
body {
background: white url("images/background.gif") no-repeat right bottom;
}
http://localhost:8000/polls/
을 새로 고침하면 화면의 오른쪽 하단에 배경이 표시됩니다.
경고
물론 장고가 생성하지 않은 스타일 시트 같은 정적 파일에는 {% static %}
템플릿 태그는 사용할 수 없습니다. 정적 파일 사이에서 링크는 상대 경로를 사용해야합니다. STATIC_URL
(static
템플릿 태그가 URL을 생성하기 위해 사용)을 변경할 수 있기 때문에 정적 파일에서 여러 경로를 수정할 필요가 없습니다.
지금까지 내용은 기본입니다. 프레임 워크에 포함된 설정 및 다른 것들에 대한 자세한 내용은 정적 파일 howto 와 정적파일 레퍼런스를 참조하십시오. 정적 파일 배포는 실제 서버에서 정적 파일을 사용하는 방법을 설명합니다.
정적 파일에 익숙해졌으면, Django의 자동 생성되는 관리자 사이트를 커스터마이징하는 법에 대해 배울 수 있는 이 튜토리얼의 7장을 보세요.