Jadi ini memalukan. Saya punya aplikasi yang saya lempar bersama Flask
dan untuk saat ini hanya melayani satu halaman HTML statis dengan beberapa tautan ke CSS dan JS. Dan saya tidak dapat menemukan di mana dalam dokumentasi Flask
menjelaskan pengembalian file statis. Ya, saya bisa menggunakan render_template
tetapi saya tahu datanya tidak templatized. Saya telah memikirkan send_file
atau url_for
hal yang benar, tetapi saya tidak bisa membuatnya bekerja. Sementara itu, saya membuka file, membaca konten, dan memasang tipe Response
mimet yang sesuai:
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)
Seseorang ingin memberikan contoh kode atau url untuk ini? Saya tahu ini akan sangat sederhana.