Jak obsługiwać pliki statyczne w Flasku?

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

Więc to jest krępujące. Mam aplikację, którą ułożyłem w Flask i na razie obsługuje ona pojedynczą statyczną stronę HTML z kilkoma linkami do CSS i JS. I nie mogę znaleźć gdzie w dokumentacji Flask opisuje zwracanie plików statycznych. Tak, mógłbym użyć render_template, ale wiem, że dane nie są szablonowe. Myślałem, że send_file lub url_for to właściwe rozwiązanie, ale nie mogłem zmusić ich do działania. W międzyczasie otwieram pliki, czytam zawartość i zestawianie Response z odpowiednim typem MIME:

import os.path z flask import Flask, Response app = Flask(__name__) app.config.from_object(__name__) def root_dir(): # pragma: bez okładki return os.path.abspath(os.path.dirname(__file__)) def get_file(filename): # pragma: bez okładki spróbuj: src = os.path.join(root_dir(), filename) # Dowiedz się, jak flask zwraca pliki statyczne # Wypróbowano: # - render_template # - send_file # To nie powinno być takie nieoczywiste return open(src).read() z wyjątkiem IOError jako exc: return str(exc) @app. route("/", method=["GET"]) def metrics(): # pragma: no cover content = get_file("jenkins_analytics.html") return Response(content, mimetype="text/html") @app .route("/", defaults={"ścieżka": ""}) @app.route("/<ścieżka:ścieżka>") def get_resource(ścieżka): # pragma: nie cover typy MIME = { „.css”: „text/css”, „.html”: „text/html”, „.js”: „aplikacja/javascript”, } pełna_ścieżka = ścieżka.os. join(katalog_główny(), ścieżka) ext = os.path.splitext(ścieżka)[1] typ_mime = typy_mime.get(ext, "text/html") content = get_file(pełna_ścieżka) return Response(content, typ_mime=typ_mime ) if __name__ == "__main__": # pragma: bez okładki app.run(port=80) 

Ktoś chce podać przykładowy kod lub adres URL? Wiem, że to będzie banalnie proste.