Spec-Zone.ru › Django 1.8

Написание вашей первой 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API