StaticFiles を使用してファイルを作成すると、ルート パスへのリクエストは、別の @app.get("/") で指定されたカスタム HTML ファイルの代わりに、index.html を返します。
によると、 StaticFiles の Starlette ドキュメント:
html - HTML モードで実行します。このようなファイルが存在する場合、ディレクトリの Index.html を自動的に読み込みます。
この問題を解決するには、以下に示すように、StaticFiles インスタンスを / (ルート パス) ではなく /static などの別のパスにマウントします。
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')
エンドポイントのマウントと定義の順序は重要です:
を html=True に設定すると、Web コンテンツのディレクトリを 1 行で簡単に提供できます。ただし、動的コンテンツまたは追加のエンドポイントの場合は、テンプレートを使用し、html=True を使用せずに StaticFiles を別のパスにマウントすることを検討してください。
以上がStaticFiles を使用して FastAPI のルート パスでカスタム HTML ファイルを提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。