我是 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 这个警告是什么意思?我该如何消除它?
大多数浏览器会在您网站域的根路径中查找是否存在名为 favicon.ico 的文件,该文件控制您可以在书签文件夹或浏览器地址栏中看到的网站图标。
如果您没有,那么它会返回“未找到”错误。
当您部署到 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')),
]
几乎所有浏览器通常都会在网站域的根路径中查找是否存在名为
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
可以是公司的徽标或网站所基于的任何内容。
您的浏览器正在寻找可以在地址栏中显示的图标。要么给它一个,要么忽略警告。
我面临同样的问题
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')))
]
也许我的错误得到解决。
希望这对您有帮助!
您可以通过发送
static_path
设置来提供静态文件
作为关键字参数。我们将从以下位置提供这些文件
/static/
URI(可以使用
static_url_prefix
设置),我们将服务/favicon.ico
和 /robots.txt
来自同一目录。的自定义子类
StaticFileHandler
可以用
static_handler_class
设置。
”“”
一个简单的方法是在 apache conf 文件中创建一个别名:
<VirtualHost *:443>
...
Alias /favicon.ico /path/to/your/favicon.ico
...
</VirtualHost>
我正在构建一个 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),
...
]
如果您只想删除警告而不设置自己的图标,请将
<link ...>
添加到 <head></head>
中的 base.html
,如下所示。 *答案解释了<link ...>
:
{% "base.html" %}
<head>
...
<link rel="icon" href="data:,"> {% Here %}
...
</head>