“Favicon” 是指您的網(wǎng)頁瀏覽器顯示在標(biāo)簽頁或者歷史記錄里的圖標(biāo)。 這個(gè)圖標(biāo)能幫助用戶將您的網(wǎng)站與其他網(wǎng)站區(qū)分開,因此請(qǐng)使用一個(gè) 獨(dú)特的標(biāo)志

一個(gè)普遍的問題是如何將一個(gè) Favicon 添加到您的 Flask 應(yīng)用中。首先,您當(dāng)然得 先有一個(gè)可用的圖標(biāo),此圖標(biāo)應(yīng)該是 16 x 16 像素的,且格式為 ICO 。這些雖然不是 必需的規(guī)則,但是是被所有瀏覽器所支持的事實(shí)標(biāo)準(zhǔn)。將這個(gè)圖標(biāo)放置到您的靜態(tài)文件 目錄下,文件名為 favicon.ico

現(xiàn)在,為了讓瀏覽器找到您的圖標(biāo),正確的方法是添加一個(gè) Link 標(biāo)簽到 HTML 當(dāng)中 例如:

<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">

對(duì)于大多數(shù)瀏覽器來說,這就足夠了。然后一些非常老的瀏覽器不支持這個(gè)標(biāo)準(zhǔn)。 原來的標(biāo)準(zhǔn)是在網(wǎng)站的根路徑下,查找 favicon 文件,并使用它。如果應(yīng)用程序 不是掛在在域名的根路徑,您要么需要配置 Web 服務(wù)器來在根路徑提供這一圖標(biāo), 要么您就很不幸地?zé)o法實(shí)現(xiàn)這一功能了。然而,如果您餓應(yīng)用是在根路徑,您就可以 簡(jiǎn)單的配置一條重定向的路由:

app.add_url_rule('/favicon.ico',
                 redirect_to=url_for('static', filename='favicon.ico'))

如果想要保存額外的重定向請(qǐng)求,您也可以使用 send_from_directory() 函數(shù)寫一個(gè)視圖函數(shù):

import os
from flask import send_from_directory

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico', mimetype='image/vnd.microsoft.icon')

我們可以不詳細(xì)指定 mimetype ,瀏覽器將會(huì)自行猜測(cè)文件的類型。但是我們也可以 指定它以便于避免額外的猜測(cè),因?yàn)檫@個(gè) mimetype 總是固定的。

以上的代碼將會(huì)通過您的應(yīng)用程序來提供圖標(biāo)文件的訪問。然而,如果可能的話 配置您的網(wǎng)頁服務(wù)器來提供訪問服務(wù)會(huì)更好。請(qǐng)參考對(duì)應(yīng)網(wǎng)頁服務(wù)器的文檔。

參考

  • Wikipedia 上有關(guān) Favicon 的文章