이번에는 장고 프레임 워크를 활용하여 벡엔드를 구현한 기능에 대하여 설멍하겠다. 저번 글에서 리액트를 활용하여 프론트엔드를 구현하였고 프론트엔드로부터 받은 사진을 백엔드에서 처리한 후 결과를 다시 프론트엔드로 보여주는 과정이 필요하다. 백엔드를 구현하는데에는 장고라는 python 프레임워크를 이용하였다. 장고의 구성도는 다음과 같다

. 주 역할

  • 홈페이지 파일 클라이언트에 http로 전송
  • 홈페이지와 서버 내부의 뇌졸중 여부 판단 함수 사이에 주고 받아야 하는 값 네트워크 통신을 통해 전달
  • 이목구비 구분 이미지 서버 내부에 저장

 

프로젝트 내 포함 파일

  • 홈페이지를 구성하는 리액트 앱 및 자바스크립트 파일
  • 홈페이지와 통신하는 장고 stroke앱 및 파이썬 파일
  • 얼굴 인식 및 뇌졸중 판단 여부 확인 함수의 results.py, train.py
  • 홈페이지에 나타낼 이목구비 구분 이미지 파일 (사진을 업로드 할 때 마다 저장)
  • 그 외 미디어 파일 및 정적 파일 (배경 사진, 정적 이미지)

 

프로젝트 수행 순서 (장고 위주 기술)

  1. 장고 프로젝트(리액트 앱) 내에 존재하는 index.html 파일을 views.py를 통해 클라이언트에게 http로 return한다.
  2. return 받은 index.html로 홈페이지를 출력한다. (리액트가 index.html을 이용하여 홈페이지 출력한다.)
  3. 홈페이지에서 장고 서버에 ip(고유 정보)와 이미지 파일(base64타입)을 post요청한다.
  4. post request를 통해 전달 받은 데이터를 views.py에서 results.py로 전달한다.
  5. results.py에서 연산한 결과값(1)을 json으로 직렬화하여 jsonrepsonse로 홈페이지에 리턴한다.

(1) 뇌졸중 여부, 이목구비 구분된 이미지, 코 중앙에서부터 양쪽 눈 끝으로 각각 이었을 때의 길이 비율, 양쪽 입술 끝으로 이었을 때의 길이 비율, 양쪽 코 끝으로 이었을 때의 길이 비율

 

로컬 호스트 서버 구동

manage.py를 실행하며 장고 서버가 동작한다.

서버 구동 이후

localhost:8000에 접속할 경우 장고에서 리턴하는 홈페이지에 접속 가능하다.

실제 서버에서는 nginx를 이용하여 서버를 구동한다.

정상적인 이미지를 넘겨 받아 뇌졸중 확인을 한 경우 서버 로그에 얼굴 비율 값에 대한 로그를 남깁니다.

+ Recent posts