如何在我的django应用程序中显示一个favicon?

时间:2014-02-21 15:09:56

标签: django favicon

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

14 个答案:

答案 0 :(得分:127)

如果你有一个基本或标题模板,包含在哪里,为什么不在那里包含带有基本HTML的图标?

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

答案 1 :(得分:98)

一个轻量级技巧是在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工作。

答案 2 :(得分:50)

在模板文件中

{% load static %}

然后在<head>标记内

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

这假设您在settings.py中适当地配置了静态文件。

注意:旧版本的Django使用的是load staticfiles,而不是load static

答案 3 :(得分:27)

通用解决方案

你可以像在任何其他框架中那样在Django中显示favicon:只使用纯HTML。

将以下代码添加到HTML模板的标题中 如果您的应用程序中的favicon是相同的,那么对于您的基本HTML模板更好。

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

之前的代码假定:

  1. 您有一个名为&#39; favicon&#39;的文件夹。在静态文件夹中
  2. favicon文件的名称为&#39; favicon.png&#39;
  3. 您已正确设置设置变量STATIC_URL
  4. 您可以在Wikipedia https://en.wikipedia.org/wiki/Favicon的这篇文章中找到有关文件格式支持以及如何使用favicon的有用信息。
    我建议使用.png来实现通用浏览器兼容性。

    修改
    正如一篇评论中所述, &#34;不要忘记在模板文件的顶部添加{% load staticfiles %}!&#34;

答案 4 :(得分:7)

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

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

答案 5 :(得分:3)

如果您有权限,那么

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

答案 6 :(得分:3)

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

还运行:python manage.py collectstatic

答案 7 :(得分:2)

最好的解决方案是覆盖Django base.html模板。在admin目录下创建另一个base.html模板。如果管理目录不存在,请先创建它。 app/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 %}

答案 8 :(得分:2)

我在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>`.............

项目目录结构

Image

view live here

答案 9 :(得分:1)

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

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

答案 10 :(得分:0)

最佳做法:

与您可能想到的相反,该图标图标可以是任何大小和任何图像类型。 Follow this link for details.

不为您的收藏夹添加链接会减慢页面加载速度。

在django项目中,假设您的收藏夹图标路径为:

myapp/static/icons/favicon.png

在您的Django模板中(最好是在基本模板中),将此行添加到页面顶部:

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

注意:

我们假设,静态设置在settings.py中进行了很好的配置。

答案 11 :(得分:0)

在您的settings.py中添加一个静态目录根目录:

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

创建/static/images/favicon.ico

将收藏夹图标添加到模板(base.html):

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

并在urls.py中创建URL重定向,因为浏览器在/favicon.ico中寻找收藏夹图标

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('img/favicon.ico')))
]

答案 12 :(得分:0)

只需将您的网站图标复制到: / yourappname / mainapp(ex:core)/ static / mainapp(ex:core)/ img

然后转到您的mainapp模板(例如:base.html) 并在 {%load static%} 之后复制它,因为您必须先加载静态变量。

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

答案 13 :(得分:0)

与此同时寻求帮助。我试图在我的Django项目中实现Favicon,但没有显示-希望添加到对话中。

在尝试在我的Django项目中实现favicon时,我将“ favicon.ico”文件重命名为“ my_filename.ico” –图像不会显示。重命名为“ favicon.ico”后,解决了该问题并显示了图形。以下是解决我的问题的代码:

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