Yani bu utanç verici. Birlikte attığım bir uygulama var Flask
ve şimdilik sadece CSS ve JS'ye bazı bağlantılar içeren tek bir statik HTML sayfası sunuyor. Ve belgelerde Flask
statik dosyaların geri döndüğünü açıkladığı yeri bulamıyorum . Evet, kullanabilirim render_template
ama verilerin geçici olmadığını biliyorum. Düşünürdüm send_file
ya url_for
da doğru olanıydım, ama bunları çalıştıramadım. Bu arada, dosyaları açıyorum, içerik okuyorum ve Response
uygun bir mimetype ile arma :
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)
Birisi bunun için bir kod örneği veya URL vermek istiyor? Bunun ölü basit olacağını biliyorum.