Написание вашей первой Django-приложения, часть 6
Этот учебник начинается там, где закончился Урок 5. Мы создали и протестировали веб-приложение для опросов, и теперь добавим стили и изображение.
Помимо HTML, генерируемого сервером, веб-приложениям обычно требуется обслуживать дополнительные файлы — такие как изображения, JavaScript или CSS — необходимые для рендеринга полной веб-страницы. В Django эти файлы называются «статическими файлами».
Для небольших проектов это не проблема, так как вы можете хранить статические файлы где-нибудь, где их сможет найти ваш веб-сервер. Однако в больших проектах, особенно состоящих из нескольких приложений, работа с множеством статических файлов, предоставляемых каждым приложением, становится сложной.
Для этого используется django.contrib.staticfiles: оно собирает статические файлы из каждого вашего приложения (и из других указанных вами мест) в одно место, которое можно легко обслуживать в рабочей среде.
Где получить помощь:
Если у вас возникли трудности с этим учебником, перейдите к разделу Получение помощи раздела FAQ.
Настройка внешнего вида и ощущений вашего приложения
Сначала создайте директорию под названием 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 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!), что означает, что ваш стилевой файл был правильно загружен.
Добавление фонового изображения
Далее мы создадим подкаталог для изображений. Создайте подкаталог 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;
}
Перезагрузите http://localhost:8000/polls/ и вы увидите загруженное фоновое изображение в левом верхнем углу экрана.
Предупреждение
Конечно, тег {% static %} недоступен для использования в статических файлах, таких как ваш стилевой файл, которые не генерируются Django. Вы всегда должны использовать относительные пути для связи между статическими файлами, потому что тогда вы можете изменить STATIC_URL (используемый тегом шаблона static для генерации своих URL-адресов) без необходимости изменения множества путей в ваших статических файлах.
Это основы. Для получения более подробной информации о настройках и других элементах, включенных в фреймворк, см. инструкции по статическим файлам и справочник по статическим файлам. Размещение статических файлов описывает, как использовать статические файлы на реальном сервере.
Когда вы освоите статические файлы, прочтите часть 7 этого учебника, чтобы узнать, как настроить автоматически генерируемую административную панель Django.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/3.0/intro/tutorial06/