프론트 : 리액트 백엔드 : 장고 관련 질문

조회수 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 쪽 자바스크립트를 리액트로 멋지게 컴포넌트화하면, 원하시는 것을 얻을 수 있을 것입니다.

    그리고 사실은 이게 전부입니다. 예제를 찾아보아도 거기서 거기인 것들만 나오는 이유는 아닌 게 아니라 정말 이게 다이기 때문입니다.

    시도해 보세요. 천릿길도 한 걸음부터니까요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)