Sie möchten eine benutzerdefinierte HTML-Datei wie „custom.html“ als Stammpfad Ihrer FastAPI-App rendern. Ihr aktuelles Setup führt jedoch dazu, dass stattdessen die Standarddatei index.html zurückgegeben wird.
Wie in der Starlette-Dokumentation zu StaticFiles beschrieben:
html - Run in HTML mode. Automatically loads index.html for directories if such file exists.
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
1. Mounten Sie StaticFiles in einem anderen Pfad:
Mounten Sie Ihre StaticFiles-Instanz in einem eindeutigen Pfad, z. B. /static. Dadurch wird sichergestellt, dass jeder Pfad, der mit /static beginnt, von der StaticFiles-Anwendung verarbeitet wird.
app.mount('/static', StaticFiles(directory='static'), name='static')
2. Definieren Sie StaticFiles nach Endpunkten:
Wenn Sie StaticFiles dennoch im Stammpfad (/) bereitstellen möchten, definieren Sie die StaticFiles-Instanz, nachdem Sie alle Ihre API-Endpunkte deklariert haben. Dadurch wird sichergestellt, dass die Endpunkte Vorrang vor StaticFiles haben.
@app.get('/') async def index(): return FileResponse('static/custom.html')
app.mount('/', StaticFiles(directory='static', html=True), name='static')
Das Argument html=True ermöglicht die einfache Bereitstellung statischer Webinhalte mit einer einzigen Codezeile . Wenn Sie jedoch dynamische HTML-Dateien und zusätzliche API-Endpunkte benötigen, sollten Sie erwägen, Vorlagen zu verwenden und StaticFiles in einem anderen Pfad bereitzustellen, ohne html=True zu verwenden.
Das obige ist der detaillierte Inhalt vonWie stelle ich eine benutzerdefinierte HTML-Datei als FastAPI-Root-Pfad bereit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!