【问题标题】:WARNING Not Found: /favicon.ico警告未找到:/favicon.ico
【发布时间】:2012-03-11 09:33:56
【问题描述】:

我是 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


【解决方案1】:

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

如果您没有,则返回 Not Found 错误是有效的。

【讨论】:

  • 正如伊格纳西奥所说;可以忽略这一点;但如果你想生成一个,那么这个网站会很有帮助:favicon.co.uk
  • 那个网站有点过时了;网站图标不再需要是 .ico 文件或非常小的图像。
  • 很公平!自从我需要一个以来已经有一段时间了!虽然,如果您希望新站点有一定的流量,那么将其尽可能小只会对您的客户和客户有利,并减少您自己的网络流量!每一点都有帮助。
  • 原因很清楚,但如果您不想要网站图标,您将如何禁用警告?
  • @Shayan 您网站域的根路径是紧跟在您的域名之后的任何内容。因此,对于域 example.com,如果其 URL 为 example.com/logo.png,则可以说 logo.png 位于域的根路径中。此根路径不应与 Django 的项目根目录或模板目录混淆。
【解决方案2】:

当您部署到 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')),
]

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 更好的答案是提供代码示例;)
    【解决方案4】:

    几乎所有的浏览器通常都会在网站域名的根路径下寻找一个名为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')。我们可以在django的base.html标签下添加<link rel="icon" href="{% static 'base/icons/favicon.ico' %}"><head>标签。

    当我们在其他域中遇到错误代码为 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 可以是公司的徽标或网站所基于的任何内容。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          我正在构建一个 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),
              ...
          ] 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-10-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多