我只想把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,我可以看到图标。


当前回答

复制你的图标: / yourappname mainapp(例:核心)/静态/ mainapp(例:核心)/ img

然后转到mainapp模板(例如:base.html) 复制这个,在{% load static %}后面,因为你必须先加载静态。

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

其他回答

如果你有一个基本或头部模板,包括在任何地方,为什么不包括favicon与基本HTML?

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

一个轻量级的技巧是在你的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),
    ...
]

当你真的没有其他静态内容要托管时,这是一个让favicons工作的简单技巧。

现在(2020年), 你可以在html文件中添加一个基本标签。

<head>
<base href="https://www.example.com/static/"> 
</head>

最好的解决方案是重写Django base.html模板。在admin目录下创建另一个base.html模板。如果不存在,首先创建一个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 %}
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}"/>

只需要在你的基本文件中添加它,就像第一个答案但ico扩展,并将其添加到静态文件夹