Опубликовано: 11 мая 2022 г. 19:32 | Автор: echodiv | Категория: Разработка | 👁 598

Добавление favicon.ico в Django

Favicon (сокр. от англ. FAVorite ICON — «значок для избранного») — значок веб-сайта или веб-страницы. Отображается браузером во вкладке перед названием страницы, и в качестве картинки рядом с закладкой, а также в адресной строке в некоторых браузерах. (c) wikipedia.org

Каждый веб-сайт должен иметь иконку, которая передаёт настроение сайта (или нет), большинство браузеров ожидает найти favicon.ico в корневом каталоге вашего веб-сайта (/favicon.ico). Самый простой способ использовать статические файлы, но в Django обычно мы используем поддиректорию для доступа к ним (/static).

В этом руководстве мы настроим Django для отображения favicon.ico.

 

Есть три простых способа для отображения favicon.ico:

1. Добавить HTML тег, который указывает адрес нашей иконки

2. Добавить иконку, как отображение, зарегистрировав RedirectView

3. Обработать адрес /favicon.ico на уровне Nginx (или ему подобных)

 

1. Используем HTML

1.1. Добавляем нашу иконку в static файлы

1.2. Добавляем значок в head заголовка нашего базового шаблона:

{% load static %}
<link rel="icon"href="{% static 'favicon.ico' %}">

Всё готово, иконка подключена.

 

2. Добавляем иконку как RedirectView

2.1. Добавляем нашу иконку в static файлы

2.2. Добавляем наше представление в файл urls.py.

Код достаточно прост, нужно просто сделать редирект с /favicon.ico на статический файл нашей иконки.

# urls.py
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import path
from django.views.generic.base import RedirectView
 
urlpatterns = [
	# ...
    path(
        "favicon.ico",
        RedirectView.as_view(url=staticfiles_storage.url("favicon.ico")),
    ),
] 

Всё, иконка отображается.

 

3. Обрабатываем через http сервер.

3.1. Кладём нашу иконку куда-нибудь на сервер

3.2. Редактируем конфигурационный файл

Используя директиву location, которая устанавливает конфигурацию в зависимости от URI запроса, мы определяем директиву для доступа к файлу favicon.ico.

В конфигурации веб-сервера nginx пишем:

location /favicon.ico {
    alias /staticfiles/favicon.ico;
} 

Всё готово!