set favicon in django admin

12,616

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 %}
Share:
12,616

Related videos on Youtube

kurtgn
Author by

kurtgn

Updated on June 19, 2022

Comments

  • kurtgn
    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
    Adrian Gonzalez over 3 years
    From Django 2.0 and above use {% load static %} instead of {% load staticfiles %}