将favicon添加到没有HTML的Flask服务器

Emi*_*cia 6 python favicon flask

我的烧瓶服务器不断报告

xx.xxx.xxx.xxx - - [DD/MM/YYYY HH:MM:SS] "GET /favicon.ico HTTP/1.1" 404 -
Run Code Online (Sandbox Code Playgroud)

在我添加的烧瓶服务器的代码中,

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

我添加了一个标题favicon.ico为我的烧瓶服务器运行的同一目录的图标.

Favicon的位置

如果我尝试导航到http://www.myurl.com/favicon.ico我得到404.我的烧瓶服务器没有提供html登陆页面,所以我不能添加<link rel='shortcut icon' href='favicon.ico' type='image/x-icon'/ > 任何地方.我真的不在乎实际拥有一个图标,我只是想阻止错误出现.如何提供图标/停止错误?

小智 13

将图标放在静态目录中作为favicon.ico.以及python文件中的代码

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')
Run Code Online (Sandbox Code Playgroud)

href - http://flask.pocoo.org/docs/0.12/patterns/favicon/

  • 哎呀!这是官方文档的“模式”部分当前推荐的内容,但它不必要地冗长。整个“send_from_directory(...)”咒语可以简单地替换为“app.send_static_file('favicon.ico')”。无需手动构建路径或指定 mimetype;Flask 可以为您完成这两件事(从“.ico”扩展名推断 mimetype)。 (10认同)
  • @MarkAmery 或 `current_app.send_static_file("favicon.ico")` 如果它位于蓝图中 (3认同)
  • 干杯,简单容易。 (2认同)

Jay*_*zzo 8

就其价值而言,这对我有用:

from flask import url_for

# Load Browser Favorite Icon
@app.route('/favicon.ico')
def favicon():
    return url_for('static', filename='image/favicon.ico')
Run Code Online (Sandbox Code Playgroud)

我的图像位于文件夹image内的文件夹中static

-- app
  -- static
    -- image
      -- favicon.ico
Run Code Online (Sandbox Code Playgroud)
PS: This was on 
MacOS 12.6 (21G115)
Python 3.10.8
Flask 2.2.2
Jinja2 3.1.2
Viewing in Brave Browser v1.45.116 (Oct 28th, 2022)
Run Code Online (Sandbox Code Playgroud)