Spec-Zone.ru › Django 6.0

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

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

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

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

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

Где получить помощь:

Если у вас возникли трудности при прохождении этого руководства, перейдите к разделу Получение помощи в разделе часто задаваемых вопросов.

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

Для начала создайте каталог с именем static в каталоге polls. 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):

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

Затем добавьте следующий код в начало файла polls/templates/polls/index.html:

polls/templates/polls/index.html
{% load static %}

<link rel="stylesheet" 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.png, полный путь к которому будет polls/static/polls/images/background.png.

Затем добавьте ссылку на изображение в таблицу стилей (polls/static/polls/style.css):

polls/static/polls/style.css
body {
    background: white url("images/background.png") 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/6.0/intro/tutorial06/

Spec-Zone.ru

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