Vì vậy, điều này là xấu hổ. Tôi đã có một ứng dụng mà tôi đã sử dụng cùng nhau Flaskvà hiện tại nó chỉ đang phục vụ một trang HTML tĩnh duy nhất với một số liên kết đến CSS và JS. Và tôi không thể tìm thấy nơi trong tài liệu Flaskmô tả trả về các tệp tĩnh. Có, tôi có thể sử dụng render_templatenhưng tôi biết dữ liệu không phải là templatized. Tôi đã nghĩ send_filehoặc url_forlà điều đúng đắn, nhưng tôi không thể làm cho chúng hoạt động được. Trong thời gian chờ đợi, tôi đang mở các tệp, đọc nội dung và xử lý một mô hình Responsephù hợp:
import os.path
from flask import Flask, Response
app = Flask(__name__)
app.config.from_object(__name__)
def root_dir(): # pragma: no cover
return os.path.abspath(os.path.dirname(__file__))
def get_file(filename): # pragma: no cover
try:
src = os.path.join(root_dir(), filename)
# Figure out how flask returns static files
# Tried:
# - render_template
# - send_file
# This should not be so non-obvious
return open(src).read()
except IOError as exc:
return str(exc)
@app.route('/', methods=['GET'])
def metrics(): # pragma: no cover
content = get_file('jenkins_analytics.html')
return Response(content, mimetype="text/html")
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_resource(path): # pragma: no cover
mimetypes = {
".css": "text/css",
".html": "text/html",
".js": "application/javascript",
}
complete_path = os.path.join(root_dir(), path)
ext = os.path.splitext(path)[1]
mimetype = mimetypes.get(ext, "text/html")
content = get_file(complete_path)
return Response(content, mimetype=mimetype)
if __name__ == '__main__': # pragma: no cover
app.run(port=80)
Ai đó muốn đưa ra một mẫu mã hoặc url cho việc này? Tôi biết điều này sẽ trở nên đơn giản.

