Heim >Backend-Entwicklung >Python-Tutorial >Wie stelle ich mit StaticFiles eine benutzerdefinierte HTML-Datei im Stammpfad in FastAPI bereit?
In einer FastAPI-Anwendung, die statische Dateien bereitstellt Dateien mit StaticFiles, die Anfrage an den Stammpfad gibt index.html anstelle einer benutzerdefinierten HTML-Datei zurück, die in einem separaten @app.get("/") angegeben ist.
Gemäß der Starlette-Dokumentation für StaticFiles:
html – Im HTML-Modus ausführen. Lädt index.html automatisch für Verzeichnisse, wenn eine solche Datei vorhanden ist.
Um dieses Problem zu beheben, mounten Sie die StaticFiles-Instanz in einem anderen Pfad, z. B. /static, anstelle von / (Stammpfad), wie unten gezeigt:
from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.responses import FileResponse app = FastAPI() app.mount('/static', StaticFiles(directory='static'), name='static') @app.get('/') async def index() -> FileResponse: return FileResponse('static/custom.html', media_type='html')
Die Reihenfolge beim Mounten und Definieren von Endpunkten ist entscheidend:
Das Setzen von html=True vereinfacht die Bereitstellung eines Verzeichnisses mit Webinhalten in einer Zeile. Erwägen Sie jedoch für dynamische Inhalte oder zusätzliche Endpunkte die Verwendung von Vorlagen und das Mounten von StaticFiles in einen anderen Pfad, ohne html=True zu verwenden.
Das obige ist der detaillierte Inhalt vonWie stelle ich mit StaticFiles eine benutzerdefinierte HTML-Datei im Stammpfad in FastAPI bereit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!