如何在不上传网站图标文件的情况下将网站图标添加到 Google colab 上的 Flask 路径?
How to add a favicon to a Flask route on Google colab without uploading a favicon file?
我想在 Google Colab 上的我的 Flask 应用程序上向路由 (/
) 添加一个图标,这样它将停止发送第二个 GET 请求 returns 404.
我该怎么做?
我看过各种帖子,但它们都包含 HTML 文件,而我想在 Google Colab 本身上做,而不是每次都上传图片?
import os
from flask import send_from_directory, Flask
app = Flask(__name__)
run_with_ngrok(app)
@app.route('/')
def index():
return '<h1>Hello!</h1>'
if __name__ == "__main__":
app.run()
如果您在 Google Colab 上并且不想上传或存储任何静态 HTML 文件或 favicon.ico 文件,您可以 , 然后有一个带有 link 的 <head>
块到某个网站图标文件。
from flask import Flask, render_template_string
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app)
# Here I'm using a favicon.ico of a pizza from some random generator site
FAVICON_URL='https://favicon-generator.org/favicon-generator/htdocs/favicons/2015-01-17/50e4281252565f8fc85151c075d4e937.ico'
@app.route("/")
def hello():
content='Hello!'
return render_template_string(f'''<!doctype html>
<html>
<head>
<link rel="icon" href="{FAVICON_URL}">
</head>
<body>
<h1>{content}</h1>
</body>
</html>
''')
if __name__ == '__main__':
app.run()
去掉 /favicon
上的 404(并实际显示一个图标):
如果您不关心显示实际图标,您可以按照 this answer from this post How to prevent favicon.ico requests?:
中的建议尝试使用 href="data:,"
将其“留空”
@app.route("/")
def hello():
content='Hello!'
return render_template_string(f'''<!doctype html>
<html>
<head>
<link rel="icon" href="data:,">
</head>
<body>
<h1>{content}</h1>
</body>
</html>
''')
两种解决方案似乎都适用于
- Google Colab
- Flask 1.1.2 和 flask-ngrok 0.0.25
- macOS 上的
- Firefox 88 和 Chrome90
这里可能出现的问题是必须将整个 HTML 页面维护为内联字符串,这可能不安全且麻烦 ("Generating HTML from within Python is not fun")。我不知道您打算制作的网络应用程序有多复杂。它在 Google Colab 上有意义,但使用静态 HTML 文件(+ Jinja 模板)的设置可能更易于维护。
我想在 Google Colab 上的我的 Flask 应用程序上向路由 (/
) 添加一个图标,这样它将停止发送第二个 GET 请求 returns 404.
我该怎么做?
我看过各种帖子,但它们都包含 HTML 文件,而我想在 Google Colab 本身上做,而不是每次都上传图片?
import os
from flask import send_from_directory, Flask
app = Flask(__name__)
run_with_ngrok(app)
@app.route('/')
def index():
return '<h1>Hello!</h1>'
if __name__ == "__main__":
app.run()
如果您在 Google Colab 上并且不想上传或存储任何静态 HTML 文件或 favicon.ico 文件,您可以 <head>
块到某个网站图标文件。
from flask import Flask, render_template_string
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app)
# Here I'm using a favicon.ico of a pizza from some random generator site
FAVICON_URL='https://favicon-generator.org/favicon-generator/htdocs/favicons/2015-01-17/50e4281252565f8fc85151c075d4e937.ico'
@app.route("/")
def hello():
content='Hello!'
return render_template_string(f'''<!doctype html>
<html>
<head>
<link rel="icon" href="{FAVICON_URL}">
</head>
<body>
<h1>{content}</h1>
</body>
</html>
''')
if __name__ == '__main__':
app.run()
去掉 /favicon
上的 404(并实际显示一个图标):
如果您不关心显示实际图标,您可以按照 this answer from this post How to prevent favicon.ico requests?:
中的建议尝试使用href="data:,"
将其“留空”
@app.route("/")
def hello():
content='Hello!'
return render_template_string(f'''<!doctype html>
<html>
<head>
<link rel="icon" href="data:,">
</head>
<body>
<h1>{content}</h1>
</body>
</html>
''')
两种解决方案似乎都适用于
- Google Colab
- Flask 1.1.2 和 flask-ngrok 0.0.25
- macOS 上的
- Firefox 88 和 Chrome90
这里可能出现的问题是必须将整个 HTML 页面维护为内联字符串,这可能不安全且麻烦 ("Generating HTML from within Python is not fun")。我不知道您打算制作的网络应用程序有多复杂。它在 Google Colab 上有意义,但使用静态 HTML 文件(+ Jinja 模板)的设置可能更易于维护。