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

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

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

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

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

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

Если у вас возникли проблемы с этим руководством, перейдите в раздел « Получение справки» в FAQ.

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

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

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' %}">

Тег шаблона генерирует абсолютный 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 ):

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

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

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

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

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

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

Copyright ©2020 All rights reserved