less than 1 minute read

Intro

  • 어제에 이어 프론트 엔드 개선 작업을 진행해보았다.

Trouble Shooting

Ajax로 생성한 html안에 데이터 넣기

개요

  • ajax를 이용해 페이지 이동 없이 모든 작업을 처리하려 한다.

  • 이때, django template를 통해 미리 html 코드를 생성해두고, render_to_string을 통해 html코드를 문자열로 변환하여 ajax 요청시 값에 실어 전송하도록 했다.

  • 받은 html코드는 $(id).html(rdata.html)의 형식으로 해당 패널 아래에 코드를 적용하는것까지는 완료했다.

  • 하지만, result 페이지 안에 있는 인식 결과 데이터를 표기해주는 부분들이 데이터가 누락되어 정상적으로 생성되지 않았다.

원인

  • ajax를 통해 전송할때, render_to_string을 거치게 되면서 그 과정에 ``````로 데이터를 받아오는 부분들이 모두 빈 데이터로 처리되는것을 확인.

해결

  • Session 기능을 적용해서, 사용자별로 이미지 인식 결과를 서버에 저장하고 result페이지에서 출력하게 하면 될것 같다는 생각이 들어 실행해보았다.

  • Template에서 Session값을 사용할수 있게 하기 위해 settings.py에 다음 코드를 추가했다.
    TEMPLATE_CONTEXT_PROCESSORS = (
      'django.core.context_processors.request',
    )
    
  • render_to_string()을 통해 제작해둔 html 코드를 string으로 변환하여 json에 담아 출력한다.

    • 이때, context에 세션에 담아두었던 변수를 넣어 함께 변환시켜준다.

    • render_to_string의 context에 데이터를 함께 넣는것에서 알수 있듯이, Session을 굳이 안써도 충분히 해결할수 있는 문제였다.

    • 하지만, 매번 고민하고 있던 여러 사용자 접속시 일어날 일에 대한 불안을 Session의 사용을 통해 해소했으니, 언젠가 해야 했을 일을 한 셈 치기로 했다.

교훈

  • 무언가 기능을 쓰다가 막히면, 해당 기능을 설명한 Docs부터 살펴보자.

    • 혼자 방법을 찾던 것이 무색할정도로 허무하게 해결되어버렸다.