Answers:
如果您有一个基本模板或标头模板,该模板或标头模板随处可见,为什么不在基本HTML中包含该图标呢?
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
{{STATIC_URL}}favicon.ico
href="{% static 'favicon.ico' %}
。
image/png
)和文件格式(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),
...
]
当您确实没有其他静态内容要托管时,这很容易使网站图标正常工作。
您可以像在其他任何框架中一样,在Django中显示该网站图标:仅使用纯HTML。
将以下代码添加到HTML模板的标题中。
更好的是,如果您的应用程序图标在您的应用程序中相同,则使用基本HTML模板。
<link rel="shortcut icon" href="{% static 'favicon/favicon.png' %}"/>
先前的代码假定:
您可以在Wikipedia的本文https://en.wikipedia.org/wiki/Favicon中找到有关文件格式支持以及如何使用图标的有用信息。
我建议将其用于通用浏览器兼容性。.png
编辑:
如评论中所述,
“别忘了{% load staticfiles %}
在模板文件中添加内容!”
在您settings.py
添加一个根staticfiles目录中:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
创造 /static/images/favicon.ico
将收藏夹图标添加到您的模板(base.html):
{% load static %}
<link rel="shortcut icon" type="image/png" href="{% static 'images/favicon.ico' %}"/>
并创建url重定向,urls.py
因为浏览器会在其中查找图标/favicon.ico
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('images/favicon.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模板。在管理目录下创建另一个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 %}
<link rel="shortcut icon" type="image/png" href="{% static 'favicon/sample.png' %}" />
同时运行:python manage.py collectstatic
只需将您的网站图标复制到:/ yourappname / mainapp(ex:core)/ static / mainapp(ex:core)/ img
然后转到您的mainapp模板(ex:base.html),然后在{%load static%}之后复制该模板,因为您必须先加载静态变量。
<link href="{% static 'core/img/favi_x.png' %}" rel="shortcut icon" type="image/png" />
最佳做法:
与您可能想到的相反,该网站图标可以是任何大小和任何图像类型。点击此链接以获取详细信息。
不放置指向您的网站图标的链接可能会减慢页面加载速度。
在django项目中,假设您的收藏夹图标路径为:
myapp/static/icons/favicon.png
在您的django模板中(最好在基本模板中),将此行添加到页面顶部:
<link rel="shortcut icon" href="{% static 'icons/favicon.png' %}">
注意 :
我们假设静态设置在settings.py中进行了很好的配置。
GET /favicon.ico
不在GET /static/favicon.ico
寻找http://localhost:8000/static/favicon.ico
与无关。看起来有些浏览器要求/favicon.ico
使用HTML。