【发布时间】:2016-04-29 19:58:03
【问题描述】:
我需要为 django 管理界面设置一个 favicon。
最好在全局范围内进行,不要覆盖所有应用的模板。
最干净的方法是什么?我尝试为此搜索 Django 文档,但一无所获。
【问题讨论】:
标签: django templates django-admin admin favicon
我需要为 django 管理界面设置一个 favicon。
最好在全局范围内进行,不要覆盖所有应用的模板。
最干净的方法是什么?我尝试为此搜索 Django 文档,但一无所获。
【问题讨论】:
标签: django templates django-admin admin favicon
如果 favicon 在 /app/static/img/favicon.ico 中,请将其链接到此文件的 {% block extrahead %}:/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 %}
在settings.py、INSTALLED_APPS 中,确保您的应用列在django.contrib.admin 之前。
通过删除.pyc文件来测试摆脱模板缓存:
$ find . -name \"*.pyc\" -delete".
适用于 Django 1.8.12 Firefox、Chrome。
【讨论】:
为避免复制原始文件的任何内容,您实际上可以在扩展模板时覆盖模板 (docs)。所以创建你自己的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 %}
【讨论】:
在您的template/admin/base_site.html 模板中扩展admin/base.html 并在extrahead 块中添加网站图标链接
{% extends "admin/base.html" %}
{% load staticfiles %}
...
{% block extrahead %}
<link rel="shortcut icon" href="{% static 'relative/path/to/favicon.ico' %}" />
{% endblock %}
Django 版本 >= 2
请注意,如果使用 Django 2 或更高版本,正确的导入是:
{% load static %}`
【讨论】:
覆盖 Django base.html 模板并将其放在 admin 目录下,例如 my_app/templates/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 %}
【讨论】: