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

опросы / статические / опросы / style.css
li a {
    color: green;
}

Затем добавьте следующее вверху polls/templates/polls/index.html:

опросы / шаблоны / опросы / 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):

опросы / статические / опросы / style.css
body {
    background: white url("images/background.gif") no-repeat;
}

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

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

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

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

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

Copyright ©2021 All rights reserved