그래서 이것은 창피합니다. 나는 함께 던진 응용 프로그램을 가지고 있으며 Flask
현재 CSS와 JS에 대한 링크가있는 단일 정적 HTML 페이지를 제공하고 있습니다. 그리고 문서에서 Flask
정적 파일 반환에 대해 설명 하는 곳을 찾을 수 없습니다 . 예, 사용할 수는 render_template
있지만 데이터가 템플릿 화되지 않았다는 것을 알고 있습니다. 나는 생각 send_file
했거나 url_for
옳았지만 그것들을 작동시키지 못했습니다. 그 동안 파일을 열고 내용을 읽고 Response
적절한 mimetype으로 리깅합니다 .
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)
누군가 코드 샘플이나 URL을 제공하고 싶습니까? 나는 이것이 간단하게 죽을 것이라는 것을 안다.