So stellen Sie statische Dateien in Flask bereit

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

C'est donc embarrassant. J'ai une application que j'ai lancée dans Flask et pour l'instant, elle ne sert qu'une seule page HTML statique avec quelques liens vers CSS et JS. Et je ne trouve pas où dans la documentation Flask décrit le retour de fichiers statiques. Oui, je pourrais utiliser render_template mais je sais que les données ne sont pas modélisées. J"aurais pensé que send_file ou url_for était la bonne chose, mais je n"ai pas pu les faire fonctionner. En attendant, j"ouvre les fichiers, lis le contenu et créer une Response avec le type mime approprié :

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) # Comprendre comment flask renvoie des fichiers statiques # Essayé : # - render_template # - send_file # Cela ne devrait pas être si évident return open(src).read() except IOError as exc: return str(exc) @app. route("/", methodes=["GET"]) def metrics() : # pragma : pas de contenu de couverture = get_file("jenkins_analytics.html") return Response(content, mimetype="text/html") @app .route("/", defaults={"path": ""}) @app.route("/<path:path>") def get_resource(path): # pragma : non 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) 

Quelqu'un veut donner un exemple de code ou une URL pour cela ? Je sais que ça va être très simple.