Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

CODENAVY

Django REST API 인수인계 본문

카테고리 없음

Django REST API 인수인계

codenavy 2021. 12. 30. 11:54

VS code로 테스트서버 접속 > health_prediction_django 폴더

 

 

1. runserver manage.py로 테스트페이지 구동

python runserver manage.py

 

구글 크롬에서 아래 url로 api test view page 확인

http://127.0.0.1:8000/api/v1/mets   <- 대사질환 모델

http://127.0.0.1:8000/api/v1/age     <- 생체/신체나이 예측 모델

 

- runserver로 구동하고 있는 중에 코드를 수정하면, 수정된 내용이 자동적으로 반영되어 다시 테스트페이지가 renew됨

- 크롬에서 새로고침하면 바로 수정된 사항 확인 가능

- runserver로 구동하는 건 터미널 창에서 Ctrl+C 누르면 바로 구동 종료됨

 

 

2. 백엔드로 서버 구동

bash run_production_server.sh

- 백엔드의 경우, 한 번 실행시켜 놓으면 kill하기 전까지 백에서 계속 실행됨

 

현재 구동되고 있는 서버와 포트 번호 확인 Linux 명령어

netstat -nltp

 

수정사항 반영을 위해 이전에 구동되고 있던 서버 kill 후 서버 재구동

kill -9 00000(작업번호)
bash run_production_server.sh

개발팀 측에서 항상 test 할 수 있도록 해놓아야 하므로, 수정 후 서버 반드시 다시 돌려놓기!!!

 

 

3. Django APP 관련

 

주로 수정이 필요한 파일들: models.py, views.py

 

models.py: input으로 어떤 key(feature)가 들어오며, 해당 key에 대한 value값은 어떤 형태를 가지는지 명시하는 파일

- value의 형태에 대해 FloatField, IntegerField 등으로 지정(이후에 views에서 input값이 valid한 형태를 가지는지 확인하는 과정을 거치게 됨)

- null로 받는 것이 가능한지/default값을 무엇으로 지정할지 등 파라미터로 명시 가능

- 주의: 여기에서의 default값은 DB와 관련된 것으로, 실제 모델 input에 해당 feature가 없었을 때 전달하는 default값이 아님! 모델 input으로 전달하는 default값은 views.py에서 지정해주어야 함

 

views.py: input에 대해 어떤 과정을 거쳐 어떤 output을 돌려줄 것인지 명시하는 파일

- mandatory feats에 필수 파라미터 명시되어 있음

- input에서 필수 파라미터 이외의 feature가 입력되더라도, 그 중에서 필수 파라미터만 골라서 모델 input으로 전달

- 필수 파라미터 중 하나라도 정보가 없으면 모델 예측 불가, 예측값으로 None과 false를 return

- resultDate의 경우, 정보가 없으면 20010101 디폴트값으로 return하도록 되어 있음

 

 

url로 들어가서 아래 예시를 input으로 쳐보고 예측이 잘되는지 확인하면 됨

 

<대사증후군 input 형태>

{"input":
[{
    "resultDate": 20130203,
    "gender": 0.0,
    "WC": 96.0,
    "HDLC": 45.0,
    "TG": 125.0,
    "SBP": 132.0,
    "DBP": 77.0,
    "FPG": 85.0
},
{
    "resultDate": 20130204,
    "gender": 0.0,
    "WC": 96.0,
    "HDLC": 45.0,
    "TG": 125.0,
    "SBP": 132.0,
    "DBP": 77.0,
    "FPG": 85.0
},
{
    "resultDate": 20130205,
    "gender": 0.0,
    "WC": 96.0,
    "HDLC": 45.0,
    "TG": 125.0,
    "SBP": 132.0,
    "DBP": 77.0,
    "FPG": 85.0
}]
}

 

<age모델 input 형태>

{"input":
[{
    "resultDate": 20120202,
    "height": 163.0,
    "weight": 49.0,
    "WC": 74.0,
    "BMI": 19.8,
    "Sight_L": 1.5,
    "Sight_R": 0.9,
    "Hearing_Normal": 1.0,
    "Proteinuria_Negative": 1.0,
    "SBP": 103.0,
    "DBP": 60.0,
    "hemoglobin": 13.5,
    "FPG": 79.0,
    "TC": 208.0,
    "HDLC": 62.0,
    "TG": 58.0,
    "LDLC": 134.0,
    "creatinine": 0.6,
    "GFR": 109.0,
    "AST_SGOT": 27.0,
    "ALT_SGPT": 19.0,
    "GTP": 13.0,
    "age": 52.0,
    "gender": 0.0
},
{
    "resultDate": 20120203,
    "height": 170.0,
    "weight": 53.3,
    "WC": 100.0,
    "BMI": 27.0,
    "Sight_L": 1.5,
    "Sight_R": 0.9,
    "Hearing_Normal": 1.0,
    "Proteinuria_Negative": 1.0,
    "SBP": 120.0,
    "DBP": 70.0,
    "hemoglobin": 13.5,
    "FPG": 79.0,
    "TC": 208.0,
    "HDLC": 62.0,
    "TG": 58.0,
    "LDLC": 134.0,
    "creatinine": 0.6,
    "GFR": 109.0,
    "AST_SGOT": 27.0,
    "ALT_SGPT": 19.0,
    "GTP": 13.0,
    "age": 22.0,
    "gender": 0.0
}]
}