Написание вашей первой Django-приложения, часть 6
Этот учебник начинается там, где Учебник 5 закончился. Мы создали и протестировали веб-приложение опросов, и теперь добавим стильный лист и изображение.
Помимо HTML, генерируемого сервером, веб-приложениям обычно требуется обслуживать дополнительные файлы — такие как изображения, JavaScript или CSS — необходимые для рендеринга полной веб-страницы. В Django мы называем эти файлы «статическими файлами».
Для небольших проектов это не проблема, потому что вы можете просто хранить статические файлы в месте, где ваш веб-сервер может их найти. Однако в больших проектах, особенно тех, которые состоят из нескольких приложений, работа с множеством наборов статических файлов, предоставляемых каждым приложением, становится сложной.
Для этого и предназначен django.contrib.staticfiles: он собирает статические файлы из каждого вашего приложения (и любых других указанных вами мест) в одно место, которое легко можно обслуживать в рабочей среде.
Настройка внешнего вида приложения
Сначала создайте директорию под названием static в вашей директории polls. Django будет искать статические файлы там, аналогично тому, как Django находит шаблоны внутри polls/templates/.
Настройка STATICFILES_FINDERS Django содержит список находок, которые знают, как обнаруживать статические файлы из различных источников. Один из стандартных — AppDirectoriesFinder, который ищет поддиректорию «static» в каждом из INSTALLED_APPS, как тот, который мы только что создали в polls. Сайт администрирования использует аналогичную структуру каталогов для своих статических файлов.
Внутри директории static , которую вы только что создали, создайте другую директорию под названием polls и внутри неё создайте файл под названием style.css. Другими словами, ваш стильный лист должен находиться в polls/static/polls/style.css. Благодаря тому, как работает нахождение AppDirectoriesFinder статических файлов, вы можете обратиться к этому статическому файлу в Django просто как polls/style.css, подобно тому, как вы обращаетесь к пути для шаблонов.
Назначение имён статических файлов
Как и шаблоны, мы, возможно, смогли бы обойтись, поместив наши статические файлы непосредственно в polls/static (а не создавая ещё одну polls поддиректорию), но это было бы плохой идеей. Django выберет первый статический файл, имя которого совпадёт, и если у вас был статический файл с тем же именем в другом приложении, Django не смог бы их различить. Нам нужно указать Django нужный файл, и самый простой способ гарантировать это — использовать названия, поместив эти статические файлы внутрь другой директории, названной самим приложением.
Вставьте следующий код в этот стильный лист (polls/static/polls/style.css):
li a {
color: green;
}
Далее, добавьте следующее в начало polls/templates/polls/index.html:
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />
{% load staticfiles %} загружает {% static %} тег шаблона из staticfiles библиотеки шаблонов. Тег шаблона {% static %} генерирует абсолютный URL статического файла.
Этого достаточно для разработки. Перезагрузите http://localhost:8000/polls/ и вы увидите, что ссылки вопросов теперь зелёного цвета (стиль Django!), что означает, что ваш стильный лист был загружен корректно.
Добавление изображения в качестве фона
Далее, создадим поддиректорию для изображений. Создайте images поддиректорию в polls/static/polls/ директории. Внутри этой директории поместите изображение под названием 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 %} недоступен для использования в статических файлах, таких как ваш стильный лист, которые не генерируются Django. Всегда используйте относительные пути для связи статических файлов друг с другом, так как при этом вы можете изменить STATIC_URL (используется тегом шаблона static для генерации своих URL-адресов) без необходимости изменения множества путей в ваших статических файлах.
Это основные принципы. Для получения дополнительной информации о настройках и других частях, включённых в фреймворк, см. инструкции по работе со статическими файлами и справочник по статическим файлам. Развертывание статических файлов описывает, как использовать статические файлы на реальном сервере.
Что дальше?
На этом пока заканчивается учебник для начинающих. В то же время вы можете ознакомиться с некоторыми указаниями о дальнейшем изучении.
Если вы знакомы с Python-пакетами и заинтересованы в том, как преобразовать опросы в «переиспользуемое приложение», ознакомьтесь с Расширенный учебник: Как создавать переиспользуемые приложения.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/intro/tutorial06/