FastAPI를 사용하여 Jinja2 템플릿에서 업데이트된 항목 목록 가져오기
이 튜토리얼에서는 다음을 사용하여 실시간 채팅 애플리케이션을 구현하는 방법을 보여줍니다. 주석 목록의 동적 업데이트를 위한 FastAPI 및 Jinja2. 애플리케이션은 WebSocket을 활용하여 서버와 여러 클라이언트 간의 양방향 통신 채널을 설정합니다.
문제:
새 댓글이 동적으로 표시되어야 하는 블로그 댓글 시스템을 구축한다고 상상해 보세요. 페이지를 새로 고칠 필요 없이 프런트엔드에 추가됩니다. Jinja2 템플릿은 페이지의 기존 댓글을 렌더링하는 데 사용되지만 새로 추가된 댓글을 실시간으로 검색하고 표시하려면 메커니즘이 필요합니다.
해결책:
이 기능을 달성하기 위해 단일 TCP 연결을 통해 실시간 양방향 통신을 허용하는 기술인 WebSocket을 소개합니다. FastAPI 및 Jinja2로 WebSocket을 구현하면 서버와 클라이언트 사이에 지속적인 연결을 설정할 수 있으며, 이를 통해 서버는 연결된 모든 클라이언트에 실시간으로 새 댓글을 브로드캐스트할 수 있습니다.
WebSocket 구현:
FastAPI에서 WebSocket을 설정하기 위해 들어오는 연결을 처리하고 각 클라이언트에 대한 전용 연결을 설정하는 WebSocket 엔드포인트를 생성합니다. 다음 코드는 WebSocket 끝점을 보여줍니다.
<code class="python">@app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await manager.connect(websocket) try: while True: data = await websocket.receive_json() comments.append(Comment(data['author'], data['content'])) await manager.broadcast(data) except (WebSocketDisconnect, ConnectionClosed): manager.disconnect(websocket)</code>
이 코드에서:
Jinja2 템플릿 업데이트:
Jinja2 템플릿에 업데이트된 주석을 표시하기 위해 JavaScript 및 WebSocket을 사용하여 서버에서 들어오는 메시지를 수신하고 동적으로 추가합니다. 페이지에 대한 새 댓글. index.html 템플릿에는 다음 JavaScript 코드가 포함됩니다.
<code class="html"><script> var ws = new WebSocket("ws://localhost:8000/ws"); ws.onmessage = function(event) { var comments = document.getElementById('comments'); var comment = document.createElement('li'); var jsonObj = JSON.parse(event.data); var authorNode = document.createElement('h3'); authorNode.innerHTML = jsonObj.author; var contentNode = document.createElement('p'); contentNode.innerHTML = jsonObj.content; comment.appendChild(authorNode); comment.appendChild(contentNode); comments.appendChild(comment); }; </script></code>
이 JavaScript 코드:
결론
WebSocket을 FastAPI 및 Jinja2와 통합하여 실시간 업데이트가 가능한 동적 댓글 시스템을 구현했습니다. 이 기술은 클라이언트와 서버 간에 메시지나 데이터를 실시간으로 보내고 받아야 하는 다양한 시나리오에 적용할 수 있으며, 대화형 및 응답성이 뛰어난 사용자 경험을 제공합니다.
위 내용은 WebSocket과 FastAPI를 사용하여 Jinja2 템플릿에서 실시간 댓글 업데이트를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!