Hoe statische bestanden in Flask te serveren

| | | | | | | | | | | | | | | | | | | | |

Dus dit is beschamend. Ik heb een applicatie die ik samenvoegde in Flask en voor nu biedt het slechts een enkele statische HTML-pagina met enkele links naar CSS en JS. En ik kan niet vinden waar in de documentatie Flask beschrijft het retourneren van statische bestanden. Ja, ik zou render_template kunnen gebruiken, maar ik weet dat de gegevens niet in een sjabloon staan. Ik had gedacht dat send_file of url_for het juiste was, maar ik kreeg die niet werkend. Ondertussen open ik de bestanden, lees ik de inhoud en een Response opstellen met het juiste 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 probeer: src = os.path.join(root_dir(), bestandsnaam) # Zoek uit hoe flask statische bestanden retourneert # Geprobeerd: # - render_template # - send_file # Dit zou niet zo voor de hand liggend moeten zijn return open(src).read() behalve IOError als 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: nee 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) 

Iemand die hier een codevoorbeeld of url voor wil geven? Ik weet dat dit doodeenvoudig wordt.