Подтвердить что ты не робот

Как я могу получить значок в моем приложении django?

Я просто хочу оставить 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, я увижу значок.

4b9b3361

Ответ 1

Если у вас есть шаблон базы или заголовка, который включен везде, почему бы не включить в него значок favicon с базовым HTML?

<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>

Ответ 2

Один из легких трюков - сделать перенаправление в файле 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),
    ...
]

Это хорошо работает как простой способ заставить работать иконки, когда у вас нет другого статического контента для размещения.

Ответ 3

В файле шаблона

{% load static %}

Затем внутри <head>

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

Это предполагает, что у вас есть статические файлы, настроенные соответствующим образом в settings.py.


Примечание: более старые версии Django используют load static load staticfiles, а не load static.

Ответ 4

Универсальное решение

Вы можете получить значок в Django так же, как в любой другой среде: просто используйте чистый HTML.

Добавьте следующий код в заголовок вашего HTML-шаблона.
Лучше использовать базовый HTML-шаблон, если в вашем приложении одинаковый значок.

<link rel="shortcut icon" href="{% static 'favicon/favicon.png' %}"/>

Предыдущий код предполагает:

  1. У вас есть папка с именем 'favicon' в вашей статической папке
  2. Файл favicon имеет имя favicon.png
  3. Вы правильно установили переменную установки STATIC_URL

В этой статье Википедии https://en.wikipedia.org/wiki/Favicon можно найти полезную информацию о поддержке форматов файлов и о том, как использовать значки избранного.
Я могу рекомендовать использовать .png для универсальной совместимости браузера.

РЕДАКТИРОВАТЬ:
Как написано в одном комментарии,
"Не забудьте добавить {% load staticfiles %} вверху вашего файла шаблона!"

Ответ 5

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

Просто добавьте это в базовый файл ur, как первый ответ, но расширение ico и добавьте его в статическую папку

Ответ 6

если у вас есть разрешение,

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

Ответ 7

Лучшее решение - переопределить шаблон 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 %}

Ответ 8

Я попробовал следующие настройки в Django 2.1.1

base.html

<head>
  {% load static %}
  <link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
</head>

settings.py

 STATIC_ROOT = os.path.join(BASE_DIR, 'static')
 STATIC_URL = '/static/'' <br>'.............

Структура каталога проекта

Image

посмотреть в прямом эфире здесь

Ответ 9

В вашем 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')))
]

Ответ 10

Лучшие практики :

Вопреки тому, что вы думаете, значок может быть любого размера и любого типа изображения. Перейдите по этой ссылке для деталей.

Отсутствие ссылки на ваш значок может замедлить загрузку страницы.

Предположим, что в проекте django путь к вашему значку:

myapp/static/icons/favicon.png

в ваших шаблонах django (желательно в базовом шаблоне) добавьте эту строку в начало страницы:

<link rel="shortcut icon" href="{%  static 'icons/favicon.png' %}">

Замечания :

Мы предполагаем, что статические настройки хорошо настроены в settings.py.

Ответ 11

Просто скопируйте ваш значок на: /Yourappname/mainapp (например: ядро)/статический /mainapp (например: ядро)/IMG

Затем перейдите к шаблону mainapp (например, base.html). и просто скопируйте это после {% load static%}, потому что вы должны сначала загрузить статику.

<link href="{% static 'core/img/favi_x.png' %}" rel="shortcut icon" type="image/png" />