如何在Google Colab中为Flask路由添加favicon且无需上传图标文件
解决方案
方案一:零文件透明占位favicon(推荐)
这个方案不需要上传任何文件、也不需要修改现有根路由的返回内容,直接新增一个favicon路由返回1x1透明png像素即可,完全满足避免404的需求。
完整修改后代码如下:
import os from flask import send_from_directory, Flask, make_response app = Flask(__name__) run_with_ngrok(app) @app.route('/') def index(): return '<h1>Hello!</h1>' # 新增favicon专属路由 @app.route('/favicon.ico') def favicon(): # 硬编码1x1透明PNG的二进制内容,不需要额外存储图标文件 favicon_bytes = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x0cIDAT\x08\xd7c\x00\x01\x00\x02\x00~\x00\xdc\xd2\xfe\x8e\x00\x00\x00\x00IEND\xaeB`\x82' response = make_response(favicon_bytes) response.headers['Content-Type'] = 'image/png' # 增加长缓存配置,避免浏览器重复发起请求 response.headers['Cache-Control'] = 'public, max-age=86400' return response if __name__ == "__main__": app.run()
方案二:自定义图标内嵌实现
如果需要展示自定义的favicon,不需要上传文件到Colab,可以把图标转成base64格式直接内嵌到返回的HTML中:
- 本地将你需要用的ico/png图标转换为base64编码字符串
- 将编码后的字符串嵌到HTML的favicon关联标签即可
代码示例如下:
import os from flask import send_from_directory, Flask app = Flask(__name__) run_with_ngrok(app) @app.route('/') def index(): # 把下方base64内容替换为你自己的图标转码结果即可 favicon_base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==" return f''' <link rel="icon" href="{favicon_base64}" type="image/x-icon"> <h1>Hello!</h1> ''' if __name__ == "__main__": app.run()
内容的提问来源于stack exchange,提问作者guddaae2u
相关产品推荐
相关产品推荐

