Spec-Zone.ru › Django 2.0

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

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

Помимо HTML, генерируемого сервером, веб-приложениям обычно требуется обслуживать дополнительные файлы — такие как изображения, JavaScript или CSS — необходимые для отрисовки полной веб-страницы. В Django эти файлы называются «статическими файлами».

Для небольших проектов это не проблема, так как вы можете просто сохранить статические файлы в месте, доступном вашему веб-серверу. Однако в больших проектах, особенно тех, которые состоят из нескольких приложений, работа с несколькими наборами статических файлов, предоставляемых каждым приложением, становится сложной.

Для этого и нужен django.contrib.staticfiles: он собирает статические файлы из каждого вашего приложения (и из любых других указанных вами мест) в одно место, которое можно легко обслуживать в рабочей среде.

Настройка внешнего вида вашего приложения

Сначала создайте директорию static в вашей директории polls. Django будет искать статические файлы там, аналогично тому, как Django находит шаблоны внутри polls/templates/.

Настройка Django STATICFILES_FINDERS содержит список находок, которые знают, как обнаруживать статические файлы из различных источников. Один из предустановленных — 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 статических файлов.

Этого достаточно для разработки. Перезагрузите 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.0/intro/tutorial06/

Spec-Zone.ru

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