Flask应用中无法看到网站图标(Favicon)

5

我的Flask应用程序页面上目前没有显示favicon。我有以下两个路由,如何确保显示favicon?

@app.route('/')
def hello():
    return redirect("tg://resolve?domain=sneakersale", code=302)

@app.route('/favicon.ico')
def fav():
    return send_from_directory(os.path.join(app.root_path, 'static'),'favicon.ico')

你确定 favicon.ico 被首先调用了吗?我建议在那里放置一个调试打印语句,并尝试使用 Web 浏览器对其进行 ping 测试 - 也许可以使用浏览器的开发控制台来找出问题的根源。 - Green Cloak Guy
不,我想不是首要的。但如何将其排在第一位呢? - sshkrv
2个回答

7
使用以下<link>标签在jinja2模板中指定您的网站图标。确保href设置为您在问题中编写的URL规则(/favicon.ico)。
<head>
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
</head>

这真的帮了我解决Chrome的问题!但在Safari中不起作用 :( - sshkrv
然后,问题出在Safari浏览器上,无法正确显示HTML中的网站图标(以及应该使用哪个标签/属性),而不是Flask的问题。 - Sean Pianka
如果我在 href 中添加了图标,那么我应该把它们放在哪个文件夹里?现在它们位于 templates/ 文件夹中。 - sshkrv
1
从您的原始帖子中,我可以看到您已经将 favicon.ico 放置在 /static/ 中,是吗?如果是这样,href 属性应该像这样:href={{ url_for("static", filename="favicon.ico") }} - Sean Pianka
现在它可以工作了,但是在社交网络页面上,只有当我放置bla.bla/static时,网站图标才会显示。因为现在我只能通过bla.bla/static/favicon.ico直接获取网站图标。 - sshkrv

3
如果你要复制和粘贴 @Sean Pianka 的例子,你可能需要在 href 中添加双引号,并且为了区分,也许可以在内部使用单引号,例如 href="{{ url_for('static', filename='favicon.ico') }}"。虽然 href 允许未引用的值,但对我来说,这个字符串没有它们是失败的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接