프론트 : 리액트 백엔드 : 장고 관련 질문
조회수 478회
리액트와 장고를 이용한 챗봇 개발중입니다. 현재 하고싶은건 프론트에서 사용자가 메시지 입력하면 그걸 서버로 보내서 동작을 취한 후 적절한 대답을 다시 프론트로 리턴해주는 것인데 인터넷에서 찾아보면 단순히 api로 json을 get하는 예제 뿐이라서 어떻게 해야할지 막막합니다..
1 답변
-
15분 들여서 대충 작성한 아래 코드를 봐주세요. 사용자가 뭔가 입력하고 엔터를 치면, 그 밑에 "지금 저보고 ~라고 하셨어요?"라고 뜨는 예제입니다.
장난하는 것처럼 보일지 모르지만 뭐 어찌됐든 이것도 엄연히 따지자면
프론트에서 사용자가 메시지 입력하면 그걸 서버로 보내서 동작을 취한 후 적절한 대답을 다시 프론트로 리턴
하는 웹애플리케이션 코드가 됩니다.
from django.http import JsonResponse # 테스트 안해봄, 그냥 얼개만 보세요 def mockingbird(request): humanTalk = json.loads(request.body) mocking = '지금 저보고 ' + humanTalk['message'] + '(이)라고 하셨어요?' return JsonResponse({'success':true,'message':mocking})
<!-- 테스트 안해봄, 그냥 전개만 보세요 --> <form id="human"> <input type="text" name="talk" /> </form> <div id="mockingbird"></div> <script> var human = document.getElementById('human'); var mockingBird = document.getElementById('mockingbird'); human.addEventListener('submit', function (e) { e.stopPropagation(); e.preventDefault(); var request = new XMLHttpRequest(); request.open('POST', '/mockingbird', true); request.onload = function() { if (this.status >= 200 && this.status < 400) { mockingBirdSound = JSON.parse(this.response); if (mockingBirdSound.success) { mockingBird.innerHTML += mockingBirdSound.message + '<br />'; } } }; request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); request.send({message: e.target.talk.value}); }); </script>
여기서 파이썬 쪽 스크립트를 더 고급지게 만들고 HTML 쪽 자바스크립트를 리액트로 멋지게 컴포넌트화하면, 원하시는 것을 얻을 수 있을 것입니다.
그리고 사실은 이게 전부입니다. 예제를 찾아보아도 거기서 거기인 것들만 나오는 이유는 아닌 게 아니라 정말 이게 다이기 때문입니다.
시도해 보세요. 천릿길도 한 걸음부터니까요.
댓글 입력