網站標題前的小logo
原因:每個瀏覽器訪問伺服器的時候會自動傳送一個GET 請求,地址是:/favicon.ico
如果不處理,則只會在瀏覽器標題前新增一個文字類的圖示
前提:有現有的圖示favicon.ico,且按開發規範存放在'static/img/下
解決
Flask 框架:
新增一條為/favicon.ico的規則,返回current_app的send_static_file方法,引數為logo的在static下的路徑,如:
@index_blu.route('/favicon.ico')
def get_web_logo():
return current_app.send_static_file('img/favicon.ico')
Django 框架:
需要在STATIC_URL 配置下新增一個配置引數
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
方法一:(使用重定向,會讓瀏覽器產生一個新的請求)(已測)
在urls.py 新增規則:
from django.conf.urls import url
from django.views.generic.base import RedirectView
urlpatterns = [
...,
url(r'favicon.ico', RedirectView.as_view(url='static/img/favicon.ico')),
]
方法二:(指定圖示地址,告訴瀏覽器,網站logo的正確地址,需要在模板種的頭部指定)(待測)
{% load staticfiles %}
<head lang="zh">
<meta charset="UTF-8">
<link rel="shortcut icon" href="{%static " rel="external nofollow" img/favicon.ico" %}" /> <!-- 新增這行 -->
<title></title>
</head>
方法三:(最優雅的方式,Django 有自己的靜態檔案的處理方法,那就是可以設定url規則,返回某個靜態檔案的)(已測)
from django.conf.urls import url
from django.contrib.staticfiles.views import serve
urlpatterns = [
...,
url(r'favicon.ico', serve, {'path': 'img/favicon.ico'}),
]
參考資料
如何優雅處理 Django 中的 favicon.ico 圖示:https://www.hongweipeng.com/index.php/archives/1538/