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