コンテンツにスキップ

静的ファイル

Starletteには、指定されたディレクトリでファイルサービスを提供するための StaticFiles クラスも含まれています。

静的ファイル

署名: StaticFiles(directory=None, packages=None, html=False, check_dir=True, follow_symlink=False)

  • directory -ディレクトリパスを表す文字列またはos. PathLike。
  • packages -Pythonパッケージの文字列リストまたは文字列タプルリスト。
  • html-HTMLモードで実行します。このようなファイルが存在する場合、index.html はディレクトリに自動的にロードされます。
  • check_dir-インスタンス化時にそのディレクトリが存在することを確認します。デフォルトは True です。
  • follow_symlink-ファイルとディレクトリのシンボリックリンクに従うかどうかを示すブール値。デフォルトは False です。

このAS GIアプリケーションをStarletteのルーティングと組み合わせて、包括的な静的ファイルサービスを提供できます。

Starlette. applicationからStarletteをインポート
from starlette. routing importマウント
starlette. staticfilesからStaticFilesをインポート


ルート=[
    ...
    Mount('/static', app=StaticFiles(directory='static'),name="static"),
]

app=Starlette(ルート=ルート)

一致しないリクエストに対して、静的ファイルは「404が見つかりません」または「405メソッドでは許可されていません」と応答します。HTMLモードでは、404.html ファイルが存在する場合、404応答として表示されます。

packages オプションは、Pythonパッケージ内の「静的」ディレクトリを含めるために使用できます。Pythonの「bootstrap 4」パッケージはそのような例です。

Starlette. applicationからStarletteをインポート
from starlette. routing importマウント
starlette. staticfilesからStaticFilesをインポート


ルート=[
    ...
    マウント('/static', app=StaticFiles(directory='static',package=['bootstrap 4']),name="static"),
]

app=Starlette(ルート=ルート)

デフォルトでは、StaticFiles は各パッケージ内の statics ディレクトリを検索し、文字列タプルを指定することでデフォルトのディレクトリを変更できます。

ルート=[
    ...
    Mount('/static', app=StaticFiles(package=[('bootstrap 4','static')]),name="static"),
]

Pythonパッケージを使用して静的ファイルを含めるよりも、静的ファイルを「static」ディレクトリに直接含めることをお勧めしますが、これは再利用可能なコンポーネントをバンドルするのに役立ちます。