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


当前回答

最好的解决方案是重写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 %}

其他回答

我在django 2.1.1中尝试了以下设置

base.html

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

settings.py

 STATIC_ROOT = os.path.join(BASE_DIR, 'static')
 STATIC_URL = '/static/'` <br>`.............

项目目录结构

现场观看

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

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

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

如果你允许的话

Alias /favicon.ico /var/www/aktel/workspace1/PyBot/PyBot/static/favicon.ico

为虚拟主机添加别名。(在apache配置文件中)类似于robots.txt

Alias /robots.txt /var/www/---your path ---/PyBot/robots.txt

最佳实践:

与你所想的相反,favicon可以是任何大小和任何图像类型。点击这个链接了解详情。

不给你的图标添加链接会降低页面加载速度。

在django项目中,假设你的favicon的路径是:

myapp/static/icons/favicon.png

在你的django模板中(最好是在基本模板中),添加这一行到页面的头部:

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

注意:

我们假设,静态设置在settings.py中配置得很好。

在你的settings.py中添加一个根目录staticfiles:

   STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
        ]

创建/静态/图片/ ico。位于

添加图标到你的模板(base.html):

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

并在urls.py中创建一个url重定向,因为浏览器会在/favicon.ico中查找favicon

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')))
]