警告未找到:Django 中的/favicon.ico

问题描述 投票:0回答:9

我是 Python 和 Django 新手。执行 runserver 后,当我尝试从登陆页面登录时,我看到此错误消息,

$ python manage.py runserver
Running in development mode.
Running in development mode.
Running in development mode.
Running in development mode.
Validating models...

0 errors found
Django version 1.4b1, using settings 'platformsite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[21/Feb/2012 02:33:26] "GET /accounts/home/ HTTP/1.1" 200 10698
WARNING 2012-02-21 02:33:27,204 base 41333 4353703936 Not Found: /favicon.ico
[21/Feb/2012 02:33:30] "POST /accounts/home/ HTTP/1.1" 200 11098
WARNING 2012-02-21 02:33:30,581 base 41333 4362117120 Not Found: /favicon.ico
[21/Feb/2012 02:33:35] "POST /accounts/home/ HTTP/1.1" 200 10975
WARNING 2012-02-21 02:33:36,333 base 41333 4370530304 Not Found: /favicon.ico
[21/Feb/2012 02:33:57] "POST /accounts/home/ HTTP/1.1" 200 10975
WARNING 2012-02-21 02:33:57,670 base 41333 4349497344 Not Found: /favicon.ico

我使用的是 Python 2.7、Django 1.4 和 OS X 10.7 这个警告是什么意思?我该如何消除它?

python django warnings favicon ico
9个回答
48
投票

大多数浏览器会在您网站域的根路径中查找是否存在名为 favicon.ico 的文件,该文件控制您可以在书签文件夹或浏览器地址栏中看到的网站图标。

如果您没有,那么它会返回“未找到”错误。


38
投票

当您部署到 Apache 之类的系统时,您必须在配置文件中为您的网站图标添加别名。但是,在开发模式下运行 Django 时,以下内容有效

urls.py:

from django.views.generic import RedirectView
from django.conf.urls import url

url_patterns=[
    ...

    url(r'^favicon\.ico$',RedirectView.as_view(url='/static/images/favicon.ico')),
]

11
投票

几乎所有浏览器通常都会在网站域的根路径中查找是否存在名为

favicon.ico
的文件,该文件控制我们可以在浏览器的选项卡、书签文件夹或地址栏中看到的网站图标。

当浏览器搜索

favicon.ico
并没有找到相同的内容时,则返回 Not Found 错误是有效的。

django.contrib.staticfiles.storage
提供了
staticfiles_storage
,它是项目配置的静态文件存储的实例。存储有一个 URL 方法,“[r]返回一个绝对 URL,其中文件的内容可以通过 Web 浏览器直接访问。”,这正是
{% static %}
标签所使用的。

因此模板中的

{% static 'favicon.ico' %}
本质上等同于Python中的
staticfiles_storage.url('favicon.ico')
。我们可以将
<link rel="icon" href="{% static 'base/icons/favicon.ico' %}">
标签下的
<head>
添加到 django 的
base.html

当我们在其他域中遇到错误代码为 404 的错误时,可以在

<head>
部分下添加 favicon 的链接,我们可以添加
<link>
,如下所示:

<link rel="icon" href="static/projectname/favicon.ico">

<link rel="shortcut icon" type="image/x-icon" href="base/icons/favicon.png"/>

不要忘记添加图标文件所需的位置

favicon.ico
,问题将会得到解决。

favicon.ico
可以是公司的徽标或网站所基于的任何内容。


6
投票

您的浏览器正在寻找可以在地址栏中显示的图标。要么给它一个,要么忽略警告。


6
投票
  • 我面临同样的问题

    favicon.ico
    未找到。

  • 我将图像文件从

    https://favicon.io/favicon-converter/
    转换为 favicon.ico

  • 下载 zip 文件后,然后以名称 favicon 创建新文件夹并复制 zip 中的所有文件,或者您可以解压到 favicon 文件夹。

  • 之后,我只需复制 favicon 文件夹并粘贴到静态文件夹中。

  • 我在

    urls.py
    文件(我们的
    settings.py
    文件所在的文件夹)中更新了这行代码。

     from django.urls import path
     from . import views
     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('favicon/favicon.ico')))
     ]
    
  • 也许我的错误得到解决。

  • 希望这对您有帮助!


2
投票

您可以通过发送

static_path
设置来提供静态文件 作为关键字参数。我们将从以下位置提供这些文件
/static/
URI(可以使用
static_url_prefix
设置),我们将服务
/favicon.ico
/robots.txt
来自同一目录。的自定义子类
StaticFileHandler
可以用
static_handler_class
设置。 ”“”


0
投票

一个简单的方法是在 apache conf 文件中创建一个别名:

<VirtualHost *:443>
    ...
    Alias /favicon.ico /path/to/your/favicon.ico
    ...
</VirtualHost>

0
投票

我正在构建一个 Web api,也遇到了这个问题。由于这只是一个演示项目,我在浏览器中抛出了一个虚拟响应以使错误消失。在主要

urls.py
中,我在其上方添加了我的小假视图。显然,在生产中,您只需将该图标保留在静态根目录中,即您在服务器配置文件中设置的位置。

from django.http import HttpResponse

def okay(request):
    return HttpResponse('pretend-binary-data-here', content_type='image/jpeg')

urlpatterns = [
    path('favicon.ico', okay),
    ...
] 

0
投票

如果您只想删除警告而不设置自己的图标,请将

<link ...>
添加到
<head></head>
中的
base.html
,如下所示。 *答案解释了
<link ...>

{% "base.html" %}

<head>
...
<link rel="icon" href="data:,"> {% Here %}
...
</head>
© www.soinside.com 2019 - 2024. All rights reserved.