我只想将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
,我可以看到favicon。
如果您有一个基本或标题模板,包含在哪里,为什么不在那里包含基本HTML的图标?
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
在你的settings.py
中添加一个root staticfiles目录:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
创建/static/images/favicon.ico
将favicon添加到您的模板(base.html):
{% load static %}
<link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
并在urls.py
中创建一个URL重定向,因为浏览器在/favicon.ico
中寻找一个favicon
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')))
]
一个轻量级的技巧是在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工作。
在模板文件中
{% load static %}
然后在<head>
标签内
<link rel="shortcut icon" href="{% static 'favicon.ico' %}">
这假设您在settings.py中正确配置了静态文件。
注意:旧版本的Django使用load staticfiles
,而不是load static
。
你可以像在任何其他框架中那样在Django中显示favicon:只使用纯HTML。
将以下代码添加到HTML模板的标头中。 如果您的应用程序中的favicon是相同的,那么对您的基本HTML模板更好。
<link rel="shortcut icon" href="{% static 'favicon/favicon.png' %}"/>
以前的代码假定:
您可以在Wikipedia https://en.wikipedia.org/wiki/Favicon的这篇文章中找到有关文件格式支持以及如何使用favicon的有用信息。
我建议使用.png
以实现通用浏览器兼容性。
编辑:
正如一篇评论中所述,
“别忘了在模板文件的顶部添加{% load staticfiles %}
!”
<link rel="shortcut icon" href="{% static 'favicon/favicon.ico' %}"/>
只需将其添加到您的基本文件中,如第一个答案,但ico扩展名,并将其添加到静态文件夹
如果你有权限的话
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
最好的解决方案是覆盖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 %}
我在django 2.1.1中尝试了以下设置
<head>
{% load static %}
<link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
</head>
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'` <br>`.............
最佳做法:
与您的想法相反,favicon可以是任何尺寸和任何图像类型。 Follow this link for details.
不将链接添加到您的收藏夹可能会减慢页面加载速度。
在django项目中,假设您的favicon的路径是:
myapp/static/icons/favicon.png
在您的django模板中(最好在基本模板中),将此行添加到页面的头部:
<link rel="shortcut icon" href="{% static 'icons/favicon.png' %}">
注意 :
我们假设静态设置在settings.py中配置得很好。