FastAPI: HTML ファイル内で CSS/JS/画像を同時にレンダリングするにはどうすればよいですか?
P粉237125700
P粉237125700 2023-12-11 17:58:49
0
1
601

FastAPI で HTMl ファイルをレンダリングするときに問題が発生しました。

main.py ファイル

リーリー

uvicorn を使用して上記のファイルを実行すると、http://127.0.0.1:8765/ で HTML ファイルをレンダリングできますが、静的ファイル (css、js、画像など) はレンダリングされません。

index.html: HTML ファイルのコード (Angular JS で構築)

リーリー

ファイル構造:

リーリー

ブラウザコンソールを開くと、次のように表示されます。

CSS/js は静的を含まずにレンダリングする必要があります (例: http://127.0.0.1:8765/styles.87afad25367d1df4.css) が、http://127.0.0.1:8765/static/styles .87afad25367d1df4 からレンダリングされます。 cssがブラウザに読み込まれて実行されます。

これを修正する方法がわかりません。助けていただければ幸いです。

更新: よりわかりやすく説明するために次のコードを追加しました

main.py

リーリー

このファイルを test.py ファイル内のパッケージ/モジュールとして実行します:

リーリー

index.html:

リーリー

ファイル構造:

リーリー


P粉237125700
P粉237125700

全員に返信(1)
P粉029057928

まず、StaticFiles を使用する場合、html フラグが True に設定され、静的ファイルが提供されるようになります (動的 Web ページの場合)代わりに template を参照してください)、例:

リーリー

html=True はアプリケーションを HTML モードで実行することを意味するため、インデックス ページを提供するエンドポイントを定義する必要はありません。したがって、FastAPI/Starlette は自動的に index.html## をロードします。 # — Starlette のドキュメント静的ファイルを参照してください。また、追加のエンドポイントが必要な場合は、 アプリケーション内でエンドポイントを定義する順序が重要であることに注意してください。 。 p> 2 番目に、StaticFiles

インスタンスをインストールし、directory='static' を指定したため、静的ファイルはそのディレクトリから提供されることが期待されます。したがって、すべての静的ファイルと HTML ファイルを static ディレクトリに移動するだけです。これで、次のように静的ファイルを提供できるようになります (StaticFiles インスタンスを / にマウントしたと仮定します。例: app.mount('/', ...#) ##): リーリー あるいは、StaticFiles

インスタンスが

app.mount('/static', ...) のように /static にマウントされている場合 (「 この回答): リーリー あなたの場合、静的ファイルが依然として static

プレフィックス付きで読み込まれている理由は、# のように

StaticFiles インスタンスを / にインストールしているためです。 # #http://127.0.0.1:8000/static/someScript.js すべての relative# の HTML ドキュメントに を追加しただけです。 ## URL URL。したがって、HTML ファイルから 次の行 を削除する必要があります: リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート