Ответ 1
Если у вас есть шаблон базы или заголовка, который включен везде, почему бы не включить в него значок favicon с базовым HTML?
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
Я просто хочу оставить favicon.ico
в моем каталоге staticfiles
, а затем показать его в своем приложении.
Как я могу это сделать?
Я поместил файл favicon.ico
в мой каталог staticfiles
, но он не отображается, и я вижу это в своем журнале:
127.0.0.1 - - [21/Feb/2014 10:10:53] "GET /favicon.ico HTTP/1.1" 404 -
Если я перейду к http://localhost:8000/static/favicon.ico
, я увижу значок.
Если у вас есть шаблон базы или заголовка, который включен везде, почему бы не включить в него значок favicon с базовым HTML?
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
Один из легких трюков - сделать перенаправление в файле urls.py
, например, добавить представление, например, так:
from django.views.generic.base import RedirectView
favicon_view = RedirectView.as_view(url='/static/favicon.ico', permanent=True)
urlpatterns = [
...
re_path(r'^favicon\.ico$', favicon_view),
...
]
Это хорошо работает как простой способ заставить работать иконки, когда у вас нет другого статического контента для размещения.
В файле шаблона
{% load static %}
Затем внутри <head>
<link rel="shortcut icon" href="{% static 'favicon.ico' %}">
Это предполагает, что у вас есть статические файлы, настроенные соответствующим образом в settings.py.
Примечание: более старые версии Django используют load static
load staticfiles
, а не load static
.
Вы можете получить значок в Django так же, как в любой другой среде: просто используйте чистый HTML.
Добавьте следующий код в заголовок вашего HTML-шаблона.
Лучше использовать базовый HTML-шаблон, если в вашем приложении одинаковый значок.
<link rel="shortcut icon" href="{% static 'favicon/favicon.png' %}"/>
Предыдущий код предполагает:
В этой статье Википедии https://en.wikipedia.org/wiki/Favicon можно найти полезную информацию о поддержке форматов файлов и о том, как использовать значки избранного.
Я могу рекомендовать использовать .png
для универсальной совместимости браузера.
РЕДАКТИРОВАТЬ:
Как написано в одном комментарии,
"Не забудьте добавить {% load staticfiles %}
вверху вашего файла шаблона!"
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}"/>
Просто добавьте это в базовый файл ur, как первый ответ, но расширение ico и добавьте его в статическую папку
если у вас есть разрешение,
Alias /favicon.ico /var/www/aktel/workspace1/PyBot/PyBot/static/favicon.ico
добавить псевдоним к вашему виртуальному хосту. (в конфигурационном файле apache) аналогично для robots.txt
Alias /robots.txt /var/www/---your path ---/PyBot/robots.txt
Лучшее решение - переопределить шаблон Django base.html. Создайте еще один шаблон base.html под каталогом администратора. Сначала создайте каталог администратора, если он не существует. app/admin/base.html.
Добавьте {% block extrahead %}
к шаблону переопределения.
{% extends 'admin/base.html' %}
{% load staticfiles %}
{% block javascripts %}
{{ block.super }}
<script type="text/javascript" src="{% static 'app/js/action.js' %}"></script>
{% endblock %}
{% block extrahead %}
<link rel="shortcut icon" href="{% static 'app/img/favicon.ico' %}" />
{% endblock %}
{% block stylesheets %}
{{ block.super }}
{% endblock %}
Я попробовал следующие настройки в Django 2.1.1
<head>
{% load static %}
<link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
</head>
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'' <br>'.............
В вашем settings.py
добавьте корневой каталог статических файлов:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
Создать /static/images/favicon.ico
Добавьте значок в свой шаблон (base.html):
{% load static %}
<link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
И создайте перенаправление URL в urls.py
, потому что браузеры ищут значок в /favicon.ico
from django.contrib.staticfiles.storage import staticfiles_storage
from django.views.generic.base import RedirectView
urlpatterns = [
...
path('favicon.ico', RedirectView.as_view(url=staticfiles_storage.url('images/favicon.ico')))
]
Лучшие практики :
Вопреки тому, что вы думаете, значок может быть любого размера и любого типа изображения. Перейдите по этой ссылке для деталей.
Отсутствие ссылки на ваш значок может замедлить загрузку страницы.
Предположим, что в проекте django путь к вашему значку:
myapp/static/icons/favicon.png
в ваших шаблонах django (желательно в базовом шаблоне) добавьте эту строку в начало страницы:
<link rel="shortcut icon" href="{% static 'icons/favicon.png' %}">
Замечания :
Мы предполагаем, что статические настройки хорошо настроены в settings.py.
Просто скопируйте ваш значок на: /Yourappname/mainapp (например: ядро)/статический /mainapp (например: ядро)/IMG
Затем перейдите к шаблону mainapp (например, base.html). и просто скопируйте это после {% load static%}, потому что вы должны сначала загрузить статику.
<link href="{% static 'core/img/favi_x.png' %}" rel="shortcut icon" type="image/png" />