Написание вашего первого приложения Django, часть 6 ¶
Этот учебник начинается с того места, где остановился Урок 5 . Мы создали протестированное приложение для веб-опросов и теперь добавим таблицу стилей и изображение.
Помимо HTML, сгенерированного сервером, веб-приложениям обычно требуются дополнительные файлы, такие как изображения, JavaScript или CSS, необходимые для визуализации всей веб-страницы. В Django мы называем эти файлы «статическими файлами».
Для небольших проектов это не имеет большого значения, потому что вы можете хранить статические файлы там, где их сможет найти ваш веб-сервер. Однако в более крупных проектах, особенно в тех, которые состоят из нескольких приложений, работа с множеством наборов статических файлов, предоставляемых каждым приложением, становится сложной задачей.
Для этого django.contrib.staticfiles
оно предназначено: он собирает статические файлы из каждого вашего приложения (и любых других мест, которые вы укажете) в одно место, которое может быть легко использовано в производственной среде.
Где получить помощь:
Если у вас возникли проблемы с прохождением этого руководства, перейдите в раздел « Получение справки » в FAQ.
Настройте внешний вид своего приложения ¶
Сначала создайте каталог с именем static
в вашем polls
каталоге. Django будет искать там статические файлы, аналогично тому, как Django находит внутри шаблоны polls/templates/
.
STATICFILES_FINDERS
Настройка Django содержит список средств поиска, которые знают, как обнаруживать статические файлы из различных источников. Одно из значений по умолчанию - AppDirectoriesFinder
поиск «статических» подкаталогов в каждом из них
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' %}">
Шаблонный тег создает абсолютный URL статических файлов.{% static %}
Это все, что вам нужно для разработки.
Запустите сервер (или перезапустите его, если он уже запущен):
$ 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/
и вы должны увидеть загруженный фон в верхнем левом углу экрана.
Предупреждение
Шаблонный тег не доступен для использования в статических файлов , которые не генерируются Джанго, как таблицы стилей. Вы всегда должны использовать относительные пути для связывания ваших статических файлов между собой, потому что тогда вы можете изменить (используется
тегом шаблона для генерации его URL-адресов), не изменяя также кучу путей в ваших статических файлах.{% static %}
STATIC_URL
static
Это основы . Для получения дополнительных сведений о настройках и других компонентах, включенных в структуру, см. Руководство по статическим файлам и справочник по статическим файлам . Развертывание статических файлов обсуждает, как использовать статические файлы на реальном сервере.
Когда вы освоитесь со статическими файлами, прочитайте часть 7 этого руководства, чтобы узнать, как настроить автоматически сгенерированный сайт администратора Django.