이번에는 장고 프레임 워크를 활용하여 벡엔드를 구현한 기능에 대하여 설멍하겠다. 저번 글에서 리액트를 활용하여 프론트엔드를 구현하였고 프론트엔드로부터 받은 사진을 백엔드에서 처리한 후 결과를 다시 프론트엔드로 보여주는 과정이 필요하다. 백엔드를 구현하는데에는 장고라는 python 프레임워크를 이용하였다. 장고의 구성도는 다음과 같다
. 주 역할
- 홈페이지 파일 클라이언트에 http로 전송
- 홈페이지와 서버 내부의 뇌졸중 여부 판단 함수 사이에 주고 받아야 하는 값 네트워크 통신을 통해 전달
- 이목구비 구분 이미지 서버 내부에 저장
프로젝트 내 포함 파일
- 홈페이지를 구성하는 리액트 앱 및 자바스크립트 파일
- 홈페이지와 통신하는 장고 stroke앱 및 파이썬 파일
- 얼굴 인식 및 뇌졸중 판단 여부 확인 함수의 results.py, train.py
- 홈페이지에 나타낼 이목구비 구분 이미지 파일 (사진을 업로드 할 때 마다 저장)
- 그 외 미디어 파일 및 정적 파일 (배경 사진, 정적 이미지)
프로젝트 수행 순서 (장고 위주 기술)
- 장고 프로젝트(리액트 앱) 내에 존재하는 index.html 파일을 views.py를 통해 클라이언트에게 http로 return한다.
- return 받은 index.html로 홈페이지를 출력한다. (리액트가 index.html을 이용하여 홈페이지 출력한다.)
- 홈페이지에서 장고 서버에 ip(고유 정보)와 이미지 파일(base64타입)을 post요청한다.
- post request를 통해 전달 받은 데이터를 views.py에서 results.py로 전달한다.
- results.py에서 연산한 결과값(1)을 json으로 직렬화하여 jsonrepsonse로 홈페이지에 리턴한다.
(1) 뇌졸중 여부, 이목구비 구분된 이미지, 코 중앙에서부터 양쪽 눈 끝으로 각각 이었을 때의 길이 비율, 양쪽 입술 끝으로 이었을 때의 길이 비율, 양쪽 코 끝으로 이었을 때의 길이 비율
로컬 호스트 서버 구동
서버 구동 이후
localhost:8000에 접속할 경우 장고에서 리턴하는 홈페이지에 접속 가능하다.
실제 서버에서는 nginx를 이용하여 서버를 구동한다.
정상적인 이미지를 넘겨 받아 뇌졸중 확인을 한 경우 서버 로그에 얼굴 비율 값에 대한 로그를 남깁니다.
'프로젝트 > 2021 소프트웨어 공모전' 카테고리의 다른 글
[2021 소프트웨어 공모전] 뇌졸중 의심 자가진단 프로그램 개발환경 및 소스 코드 그리고 느낀점 (0) | 2021.08.26 |
---|---|
[2021 소프트웨어 공모전] 리액트를 활용한 프론트엔드 구현기능 (0) | 2021.08.26 |
[2021 소프트웨어 공모전] 안면비대칭 계산 방법과 결과 예측 (0) | 2021.08.21 |
[2021 소프트웨어 공모전] 작품 설명 (0) | 2021.08.21 |
[2021 소프트웨어 공모전] 기획 의도 (0) | 2021.08.21 |