set favicon in django admin
Solution 1
If favicon is in /app/static/img/favicon.ico
, link it into the {% block extrahead %}
of this file: /app/templates/admin/base_site.html
{% extends "admin/base.html" %}
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block extrahead %}
<link rel="icon" href="{{STATIC_URL}}img/favicon.ico" sizes="48x48" />
{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}
In settings.py
, INSTALLED_APPS
be sure your app is listed before django.contrib.admin
.
To test get rid of template cache by deleting .pyc
files:
$ find . -name \"*.pyc\" -delete".
Works with Django 1.8.12 Firefox, Chrome.
Solution 2
To avoid duplicating anything of the original file, you can actually override the template while extending it (docs). So create your own template/admin/base_site.html
:
{% extends "admin/base_site.html" %}
{% load static %}
{% block extrahead %}
<link rel="shortcut icon" href="{% static 'yourapp/img/favicon.ico' %}" />
{% endblock %}
Solution 3
Extend admin/base.html
in your template/admin/base_site.html
template and add the favicon link in extrahead block
{% extends "admin/base.html" %}
{% load staticfiles %}
...
{% block extrahead %}
<link rel="shortcut icon" href="{% static 'relative/path/to/favicon.ico' %}" />
{% endblock %}
Django version >= 2
Mind that the correct import, if using Django 2 or above, is:
{% load static %}`
Solution 4
Override the Django base.html template and put it under admin directory like my_app/templates/admin/base.html.
Add {% block extrahead %}
to the overriding template.
{% 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 %}
Related videos on Youtube
kurtgn
Updated on June 19, 2022Comments
-
kurtgn almost 2 years
I need to set up a favicon for django admin interface.
It would be best to do it globally, without overriding templates for all apps.
What is the cleanest way to do it? I tried searching Django documentation for this, but found nothing.
-
Adrian Gonzalez over 3 yearsFrom Django 2.0 and above use {% load static %} instead of {% load staticfiles %}