Dalam templat Jinja2, anda boleh memaparkan data sedia ada menggunakan gelung, seperti memaparkan ulasan pada catatan blog. Walau bagaimanapun, apabila item baharu ditambah, Jinja2 tidak menyediakan cara asli untuk mengemas kini senarai secara dinamik.
Penyelesaian biasa untuk kemas kini masa nyata dalam aplikasi web ialah untuk menggunakan WebSockets. Kod Python berikut menyediakan titik akhir 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>
Dalam templat index.html, kami mewujudkan sambungan WebSocket dan mendengar mesej masuk:
<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>
Titik akhir WebSocket kemudiannya boleh menyiarkan sebarang kemas kini kepada pelanggan yang disambungkan. Ini membolehkan paparan masa nyata dan dinamik senarai ulasan yang dikemas kini.
Walaupun WebSockets merupakan penyelesaian yang berdaya maju untuk kes penggunaan ini, adalah penting untuk mempertimbangkan pendekatan alternatif seperti Alpine JS x-for loops atau ReactJS untuk interaksi UI yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan WebSockets untuk Kemas Kini Data Masa Nyata dalam Jinja2 dengan FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!