Jinja2 テンプレートでは、ループを使用して既存のデータをレンダリングできます (コメントの表示など)。ブログ投稿。ただし、新しい項目が追加された場合、Jinja2 はリストを動的に更新する方法をネイティブに提供しません。
Web アプリケーションでのリアルタイム更新の一般的な解決策は次のとおりです。 WebSocket を使用します。次の Python コードは、WebSocket エンドポイントを提供します。
<code class="python">from fastapi import FastAPI, WebSocket, WebSocketDisconnect from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory="templates") class ConnectionManager: def __init__(self): self.active_connections = [] async def connect(self, websocket: WebSocket): await websocket.accept() self.active_connections.append(websocket) def disconnect(self, websocket: WebSocket): self.active_connections.remove(websocket) async def broadcast(self, message: str): for connection in self.active_connections: await connection.send_json(message) manager = ConnectionManager()</code>
index.html テンプレートでは、WebSocket 接続を確立し、受信メッセージをリッスンします。
<code class="html"><script> var ws = new WebSocket("ws://localhost:8000/ws"); ws.onmessage = function(event) { // Handle new data and update UI accordingly }; </script></code>
その後、WebSocket エンドポイントは次のことができます。接続されているクライアントに更新をブロードキャストします。これにより、更新されたコメント リストをリアルタイムで動的に表示できます。
WebSocket はこのユースケースでは実行可能なソリューションですが、Alpine JS などの代替アプローチを検討することが重要です。より複雑な UI インタラクションには x-for ループまたは ReactJS。
以上がFastAPI を使用して Jinja2 でリアルタイム データ更新用の WebSocket を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。