Heim >Backend-Entwicklung >Python-Tutorial >Wie implementiert man WebSockets für Echtzeit-Datenaktualisierungen in Jinja2 mit FastAPI?
In der Jinja2-Vorlage können Sie vorhandene Daten mithilfe von Schleifen rendern, z. B. durch die Anzeige von Kommentaren zu einem Blogbeitrag. Wenn jedoch neue Elemente hinzugefügt werden, bietet Jinja2 nativ keine Möglichkeit, die Liste dynamisch zu aktualisieren.
Eine gängige Lösung für Echtzeitaktualisierungen in Webanwendungen ist um WebSockets zu verwenden. Der folgende Python-Code stellt einen WebSocket-Endpunkt bereit:
<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>
In der Vorlage index.html stellen wir eine WebSocket-Verbindung her und warten auf eingehende Nachrichten:
<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>
Der WebSocket-Endpunkt kann dann Übertragen Sie alle Aktualisierungen an verbundene Clients. Dies ermöglicht eine Echtzeit- und dynamische Anzeige der aktualisierten Kommentarliste.
Während WebSockets eine praktikable Lösung für diesen Anwendungsfall sind, ist es wichtig, alternative Ansätze wie Alpine JS in Betracht zu ziehen x-for-Schleifen oder ReactJS für komplexere UI-Interaktionen.
Das obige ist der detaillierte Inhalt vonWie implementiert man WebSockets für Echtzeit-Datenaktualisierungen in Jinja2 mit FastAPI?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!