在 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端點可以向連接的客戶端廣播任何更新。這允許即時動態顯示更新的評論清單。
雖然 WebSockets 是此用例的可行解決方案,但考慮 Alpine JS 等替代方法也很重要x-for 循環或 ReactJS 用於更複雜的 UI 交互。
以上是如何使用 FastAPI 在 Jinja2 中實現 WebSocket 進行即時資料更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!