添加网站图标

“网站图标”(favicon)是浏览器用于标签页和书签的图标。这有助于区分您的网站并赋予其独特的品牌形象。

一个常见的问题是如何向 Flask 应用程序添加网站图标。首先,当然,您需要一个图标。它应该是 16 × 16 像素,并且是 ICO 文件格式。这不是强制要求,而是所有相关浏览器都支持的事实标准。将图标放在您的静态目录中,命名为 favicon.ico

现在,为了让浏览器找到您的图标,正确的方法是在您的 HTML 中添加一个 link 标签。例如:

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

对于大多数浏览器来说,这就是您所需要的全部,但是一些非常旧的浏览器不支持此标准。旧的事实标准是在网站根目录以这个名称提供此文件。如果您的应用程序没有挂载在域名的根路径,您要么需要配置 Web 服务器以在根目录提供图标,要么如果您无法做到这一点,您就无能为力了。但是,如果您的应用程序是根目录,您可以简单地路由一个重定向:

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

如果您想节省额外的重定向请求,您也可以使用 send_from_directory() 编写一个视图:

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')

我们可以省略显式的 mimetype,它会被猜测出来,但是我们不妨指定它以避免额外的猜测,因为它将始终是相同的。

以上将通过您的应用程序提供图标,如果可能,最好配置您的专用 Web 服务器来提供它;请参阅 Web 服务器的文档。

另请参阅