Spec-Zone.ru › Django 4.0

Написание вашего первого приложения 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):

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-адресов) без необходимости изменения большого количества путей в ваших статических файлах.

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

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

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

Spec-Zone.ru

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