앞에서 가장 큰 문제였던 상냥체, 정중체 말투 변환기 개발이 해결되었으니,
이제 필요한건 웹서버로
1. 사용자로부터 카카오톡 대화 내역 txt파일을 업로드 받고
2. 해당 텍스트파일에서 사용자가 보낸 문장을 추출
3. 상냥체, 정중체 변환기로 사용자 문장 <-> 상냥체, 정중체 문장 pair 데이터셋 생성
4. 사용자 말투 변환기 학습
5. 지정된 답변 리스트를 사용자 말투로 변환
하는 프로세스를 구현하는 것.
.
.
.
.
말이 쉽지.. 이때 당시에 장고는 예전 연구실 지도 교수님께서 장고 공부하라고 주셨던 책 중간까지 필사했던 것 뿐이었다. (도움 많이 되긴했음)
MTV 패턴, allowed_host, 데이터베이스... 등등 한번에 이해하기 빡셌는데 유튜브, 구글링으로 미친듯이 찾아보면서 나름 개인적으로 이해하기 편한 방식으로 습득하는데에 성공했다.
그래서 이때 장고 웹서버 개발하면서 개인적으로 이해하기 편했던 방식을 설명하고자 한다.
장고, 웹서버? 그게 뭔데?
장고에 대해서 공부하고자 할때 한번쯤 무조건 듣는 단어가 있다.
바로 MTV 패턴인데, model, template, view의 약자이다.
정석적인 이해는
model : 데이터베이스에 저장되는 데이터
template : 사용자에게 보여지는 부분 (UI)
view : 웹 요청에 따라 처리할 비즈니스 로직
인데
이걸 따로 따로 이해하려고 들면 잘 이해가 안된다.
하지만 웹서버의 기본적인 프로세스를 이해하고나서, 각 프로세스 단위로서 위의 패턴 요소들을 바라보면
"역시 개발자들은 규격화, 효율에 미친 사람들이야."
라는 생각과 함께 저 패턴을 이해할 수 있게 된다.
먼저 웹서버의 대략적인 플로우 차트는 다음과 같다.
웹서버 플로우 차트
단순하게 바라보면
1. 사용자가 인터넷을 통해 서버로 요청을 보낸다. ex) 웹페이지에 접속한다.
2. 서버에서는 도착한 요청에 따라 정의된 로직을 수행한다.
ex) 데이터베이스에서 데이터를 꺼내와 웹페이지를 구성한다. or 접속 로그 데이터를 데이터베이스에 삽입한다.
3. 서버에서 로직의 반환값을 인터넷을 통해 user에게 반환한다.
실제 예시를 들자면,
1. 쿠팡에서 어떠한 제품을 검색하면
2. 쿠팡 서버에서 정의한 로직 (어떠한 제품을 검색했을 때 어떤 제품들을, 어떤 순서로, 어떤 UI에 맞춰서 띄울지 등)에 따라 반환할 웹페이지를 구성
3. 인터넷을 통해 나에게 반환해주는 과정이다.
그래서 이게 MTV 패턴이랑 무슨 관계일까?
쉽게 말해 사용자가 요청을 보냈을 때 사용되는,
데이터 베이스를 수정하고 싶다 -> Model 수정
서버에서 동작하는 로직을 수정하고 싶다 -> View 수정
사용자에게 반환해주는 웹 UI를 수정하고 싶다 -> template 수정
그림으로 보면...
이런식으로 장고로 view, template, model 세가지만 잘 구현하고, 연결하면
user가 내 웹에 접속하거나, 특정 행동을 할때 어떻게 대응할지를 관리할 수 있게되는 것이다.
근데 아마 처음 구현하는 사람들은 왜 view가 의미론적으로는 UI를 담당할 것 같은데 왜 로직 담당이지?에서 많이 헷갈려할 것인데....
이건 디자인 패턴 만든 사람 마음인 것 같다. 나도 왜그런지는 잘 모름...
확실한건 view.py 파일에서 하루종일 로직 수정하다보면 금방 익숙해진다는....😂😂
근데 여기서 생기는 궁금증!!
사용자는 서버로 어떻게 요청을 날리고, view에서는 그 요청을 어떻게 받는가?
이에 대한 글은 다음글에서...
힌트를 남기자면 url 기반 리디렉션이 기본적인 view 동작 트리거라는 것?
https://www.coupang.com/np/coupangglobal
https://www.coupang.com/np/categories/393760
위의 두 url은 각각 쿠팡의 홈화면에서 로켓 직구, 로켓 프레시 버튼을 눌렀을 때 로딩되는 웹페이지의 url이다.
딱 봐도 url에 따라서 웹페이지가 다르게 뜨도록 지정해놓은 것 같지 않나???
아님 말고~
(다음글에서 이에 대한 설명 + 장고 구현 시작합니당)