Je veux juste déposer le favicon.ico
dans mon répertoire staticfiles
, puis l'afficher dans mon application.
Comment puis-je accomplir cela?
J'ai placé le fichier favicon.ico
dans mon répertoire staticfiles
, mais il ne s'affiche pas et je le vois dans mon journal:
127.0.0.1 - - [21/Feb/2014 10:10:53] "GET /favicon.ico HTTP/1.1" 404 -
Si je vais à http://localhost:8000/static/favicon.ico
, je peux voir le favicon.
Si vous avez un modèle de base ou en-tête inclus partout, pourquoi ne pas inclure le favicon dans le HTML de base?
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
Une astuce légère consiste à effectuer une redirection dans votre fichier urls.py
, par exemple. ajouter une vue comme celle-ci:
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),
...
]
Cela fonctionne bien comme un truc facile pour faire fonctionner les favicons quand vous n'avez pas vraiment d'autre contenu statique à héberger.
Dans un fichier modèle
{% load staticfiles %}
Puis dans la balise <head>
<link rel="shortcut icon" href="{% static 'favicon.ico' %}">
Cela suppose que vous ayez des fichiers statiques configurés correctement dans settings.py.
Vous pouvez obtenir le favicon dans Django de la même manière que dans n'importe quel autre framework: utilisez simplement du HTML pur.
Ajoutez le code suivant à l'en-tête de votre modèle HTML.
Mieux, utilisez votre modèle HTML de base si l’icône de favicon est identique dans votre application.
<link rel="shortcut icon" href="{% static 'favicon/favicon.png' %}"/>
Le code précédent suppose:
Vous pouvez trouver des informations utiles sur le support du format de fichier et l'utilisation des favicons dans cet article de Wikipedia https://en.wikipedia.org/wiki/Favicon .
Je peux recommander l’utilisation de .png
pour une compatibilité de navigateur universelle.
MODIFIER:
Tel que publié dans un commentaire,
"N'oubliez pas d'ajouter {% load staticfiles %}
en haut de votre fichier de modèle!"
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}"/>
Il suffit d’ajouter cela dans le fichier de base comme la première réponse, mais avec l’extension ico, et de l’ajouter au dossier statique
J'ai essayé les paramètres suivants dans 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>`.............
si vous avez la permission alors
Alias /favicon.ico /var/www/aktel/workspace1/PyBot/PyBot/static/favicon.ico
ajoutez un alias à votre hôte virtuel. (dans le fichier de configuration Apache) de la même manière pour le fichier robots.txt
Alias /robots.txt /var/www/---your path ---/PyBot/robots.txt
La meilleure solution consiste à remplacer le modèle Django base.html. Créez un autre modèle base.html sous le répertoire admin. Créez d'abord un répertoire admin s'il n'existe pas. app/admin/base.html.
Ajoutez {% block extrahead %}
au modèle de remplacement.
{% 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 %}
Dans votre settings.py
ajoutez un répertoire rootfiles:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
Créer /static/images/favicon.ico
Ajoutez le favicon à votre modèle (base.html):
{% load static %}
<link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
Et créez une redirection d’URL dans urls.py
car les navigateurs recherchent un favicon dans /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')))
]
Les meilleures pratiques :
Contrairement à ce que l'on pourrait penser, le favicon peut être de toute taille et de tout type d'image. Suivez ce lien pour plus de détails.
Ne pas mettre de lien vers votre favicon peut ralentir le chargement de la page.
Dans un projet Django, supposons que le chemin d'accès à votre favicon soit:
myapp/static/icons/favicon.png
dans vos modèles Django (de préférence dans le modèle de base), ajoutez cette ligne à l'en-tête de la page:
<link rel="shortcut icon" href="{% static 'icons/favicon.png' %}">
Remarque :
Nous supposons que les paramètres statiques sont bien configurés dans settings.py.