첫 번째 장고 앱 작성하기, part 6

이 튜토리얼은 :doc:`튜토리얼 5장 </intro/tutorial05>`에 이어서 시작합니다. 우리는 테스트된 Web-poll 애플리케이션을 구축했으며, 이제 스타일시트와 이미지를 추가할 것입니다.

서버에서 생성 된 HTML을 제외하고, 웹 어플리케이션은 일반적으로 전체 웹 페이지를 렌더링하는 데 필요한 추가 파일 — 예:이미지, JavaScript 또는 CSS — 을 제공해야합니다. Django에서는 이러한 파일을 “정적 파일” 이라고 부릅니다.

소규모 프로젝트에서는 정적 파일을 웹 서버에서 찾을 수 있는 위치에 보관할 수 있으므로 이는 큰 문제가 되지 않습니다. 그러나 대형 프로젝트, 특히 여러 앱으로 구성된 프로젝트에서는 각 애플리케이션에서 제공하는 여러 정적 파일 세트를 처리하는 것이 까다로워지기 시작합니다.

이것이 django.contrib.staticfiles의 목적입니다: 이것은 각 응용 프로그램(및 여러분이 지정한 다른 위치)의 정적 파일들을 프로덕션 환경에서 쉽게 제공 할 수있는 단일 위치로 수집합니다.

도움을 받을 수 있는 방법

이 튜토리얼을 수행하는 데 문제가 있는 경우 FAQ 섹션인 :doc:`Getting Help </faq/help>`으로 이동하십시오.

의 모양과 느낌을 원하는 대로 바꿔보세요.

먼저, polls 디렉토리에 static 디렉토리를 만듭니다. polls/templates/ 안의 템플릿을 찾는 것과 비슷하게 정적 파일을 찾습니다.

Django의 STATICFILES_FINDERS 설정은 다양한 소스에서 정적 파일을 찾는 방법을 알고 있는 파인더 목록을 가지고 있습니다. 기본값 중 하나는 AppDirectoriesFinder 인데, INSTALLED_APPS 에서 “정적” 하위 디렉토리를 찾습니다, 방금 생성 한 polls 의 경우입니다. 관리 사이트는 정적 파일에 대해 동일한 디렉토리 구조를 사용합니다.

방금 생성한 static 디렉토리 안에 polls 라는 또 다른 디렉토리를 만들고 그 안에 style.css 라는 파일을 만듭니다. 즉, 스타일 시트는 polls/static/polls/style.css에 있어야합니다. AppDirectoriesFinder 정적 파일 검색기 작동 방식 때문에 장고에 있는 이 정적 파일을 템플릿 경로를 참조하는 방식과 유사하게 polls/style.css 라고 부를 수 있습니다.

정적 파일 네임스페이싱

템플릿과 마찬가지로 정적 파일을 polls/static``에 직접 저장하면 (다른 ``polls 하위 디렉토리를 만드는 대신) 벗어날 수 있지만, 실제로는 좋지 않은 생각입니다. Django는 이름이 일치하는 첫 번째 정적 파일을 선택합니다. 그런데 만약 다른 응용 프로그램에 같은 이름의 정적 파일이 있으면 Django는 이들 파일을 구별할 수 없습니다. 우리는 Django가 올바른 것을 가리킬 수 있게 해야하는데, 이것을 보장하는 가장 쉬운 방법은 namespacing 입니다. 즉, 정적 파일을 애플리케이션과 다른 디렉토리에 두는 것입니다.

그 스타일 시트(polls/static/polls/style.css)에 다음 코드를 넣으세요.

polls/static/polls/style.css
li a {
    color: green;
}

다음으로, polls/templates/polls/index.html의 맨 위에 다음을 추가하세요.

polls/templates/polls/index.html
{% load static %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">

{% static %} 템플릿 태그는 정적 파일의 절대 URL을 생성합니다.

개발에 필요한 것은 이것이 전부입니다.

서버를 시작합니다(이미 실행 중이라면 재시작합니다).

$ python manage.py runserver
...\> py manage.py runserver

http://localhost:8000/polls/를 새로고침하면 질문의 링크가 녹색(Django 스타일!)로 표시되는 것을 볼 수 있으며, 이는 스타일시트가 올바로 적재된 것을 의미합니다.

배경 이미지 추가하기

다음으로, 이미지 용 하위 디렉토리를 만듭니다. polls/static/polls/ 디렉토리에 images 서브 디렉토리를 만듭니다. 이 디렉토리 안에 background.gif라는 이미지를 넣으십시오. 즉, 이미지를 polls/static/polls/images/background.gif에 넣으십시오.

그런 다음, 스타일 시트(polls/static/polls/style.css)에 다음을 추가하세요.

polls/static/polls/style.css
body {
    background: white url("images/background.gif") no-repeat;
}

http://localhost:8000/polls/을 새로고침하면 화면의 왼쪽 상단에 배경이 나타날 것입니다.

경고

스타일시트와 같이 Django가 생성하지 않은 정적 파일에는 {% static %} 템플릿 태그를 사용할 수 없습니다. 정적 파일을 서로 연결할 때는 항상 **상대 경로**를 사용해야 합니다. 그러면 정적 파일의 여러 경로를 수정할 필요 없이 STATIC_URL`( :ttag:`static 템플릿 태그에서 URL을 생성하는 데 사용됨)을 변경할 수 있습니다.

지금까지의 내용은 기본입니다. 프레임워크에 포함된 설정 및 다른 것들에 대한 자세한 내용은 정적 파일 howto정적 파일 레퍼런스를 참조하십시오. 정적 파일 배포는 실제 서버에서 정적 파일을 사용하는 방법을 설명합니다.

정적 파일에 익숙해졌으면, Django의 자동 생성되는 관리자 사이트를 커스터마이징하는 법에 대해 배울 수 있는 이 튜토리얼의 7장을 보세요.

Back to Top