프로젝트_랜드마크 - 25일차
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부터 살펴보자.
- 혼자 방법을 찾던 것이 무색할정도로 허무하게 해결되어버렸다.