警告未找到:/favicon.ico

时间:2012-02-21 02:37:02

标签: python django

我是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 这个警告是什么以及如何摆脱它?

7 个答案:

答案 0 :(得分:22)

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

如果您没有,那么它将返回Not Found错误。

答案 1 :(得分:7)

当您部署到Apache之类的东西时,您必须在配置文件中为您的favicon添加别名。但是,在开发模式下运行Django时,以下工作

urls.py:

from django.views.generic import RedirectView

url_patterns=[
    ...

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

答案 2 :(得分:6)

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

答案 3 :(得分:3)

几乎所有浏览器通常都会在网站域的根路径中查找名为favicon.ico的文件,这控制了我们可以在书签文件夹或地址栏中看到的网站图标。浏览器。

当浏览器搜索favicon.ico并没有找到它时,则将返回未找到错误。

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' %}">添加到base.html

此外,在项目文件夹的“ static / base / icons”文件夹中添加图标文件favicon.ico,该问题将得到解决。

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

答案 4 :(得分:2)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分: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),
    ...
]