Spec-Zone.ru › Django 2.1

Написание вашей первой Django-приложения, часть 6

Этот учебник начинается там, где закончился Урок 5. Мы построили протестированное приложение Web-poll, и теперь добавим таблицу стилей и изображение.

Помимо 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):

polls/static/polls/style.css
li a {
    color: green;
}

Далее, добавьте следующее в начало polls/templates/polls/index.html:

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):

polls/static/polls/style.css
body {
    background: white url("images/background.gif") no-repeat;
}

Перезагрузите http://localhost:8000/polls/ и вы должны увидеть фон, загруженный в верхнем левом углу экрана.

Предупреждение

Конечно, тег {% static %} недоступен для использования в статических файлах, таких как ваша таблица стилей, которые не генерируются Django. Вы всегда должны использовать относительные пути для ссылки на ваши статические файлы друг на друга, потому что тогда вы можете изменить STATIC_URL (используемый тегом шаблона static для генерации своих URL-адресов) без необходимости изменения многих путей в ваших статических файлах.

Это основы. Более подробную информацию о настройках и других компонентах, включенных в фреймворк, см. в руководстве по статическим файлам и справочнике по staticfiles. Развертывание статических файлов описывает, как использовать статические файлы на реальном сервере.

Когда вы освоите статические файлы, прочитайте часть 7 этого учебника, чтобы узнать, как настроить автоматически генерируемую Django административную панель.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/intro/tutorial06/

Spec-Zone.ru

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