1) 앱 사진 촬영 - db저장 - django 딥러닝 코드에서 처리 - db로 전송 - 앱 프론트에 뿌리기
2) 앱 사진 촬영 - django 딥러닝 이미지 처리 - 앱 프론트 - db 최종 이미지 저장
일단 내 앱에서는 연동이 위의 두 가지로 가능할 것 같은데 굳이 계속해서 DB를 거쳐갈 필요가 없다면,
예를 들어서 소켓 프로그래밍을 하는 것 처럼 django 와 android 앱이 직접적으로 이미지 데이터를 주고 받을 수 있다면 처리된 이미지를 안드로이드 앱에서만 DB 에 저장해주면 될 것이다.
그 방향이 구현이 덜 복잡하지 않을까 생각하여 오늘은 2) 안으로 연동을 해보려고 한다.
____________________________________________________________________________________________________________________
조사를 해 보던 중 알게 된 사실
(서버 프로그래밍에 익숙하지 않아서 잘 몰랐었는데, 웹 개발 할 때랑 네트워크 수업 때 배운거와 아예 연관이 없는 것 같지 않다..! 가즈아)
이미지 데이터는 어차피 폴더 안에 받아올 거니까 JSON 형식 안에 주소 값으로 보낸다.
{
...
"image" : "http://localhost:8000/folder_1/image.png"
}
이런식으로
그리고 매번 새로 모바일 앱에서 보내는 이미지는 그 folder_1에 같은 이름으로 들어가게 해서 새로운 이미지가 들어올 때 마다 이전 이미지가 삭제되도록 한다.
유저가 많은 경우에는 그 이미지 하나를 바로 지우지 않는 것 마저 큰 defect가 되겠지만, 일단 기능 구현에 중점을 두고 있다.
근데 그렇게 처리된 이미지를 안드로이드에서 따로 카피해서 저장하는게 가능할까?
재정립한 구현 순서는 다음과 같다.
1) django + android + db 연동하고 간단한 json 주고 받아보기
2) 이미지를 바이너리화 해서 주고 받든, json으로 주고 받든 이미지 transfer 구현하기
________________________________________________________________________________________________________________________
1) 번 진행 과정
아래 두 reference 를 참고하여 진행할 예정이다.
우선 어제 만들어둔 가상환경에 들어간다
cmd에 workon을 타이핑해보면 현재 가상환경 리스트가 나오는데
workon name_virtualenvironment 를 쳐주면 가상환경을 activate 할 수 있다.
가상환경 내에서 장고 restapi 를 install 해주려고 한다.
A. 장고 restframework install
pip install djangorestframework
B. settings.py 의 INSTALLED_APPS 에 restframework를 더해준다.
C. MySQL 설치
x86에 32bit 라고 쓰여 있어서 찾아보니, 64bit 환경에서도 잘 돌아간다고 한다.
dev.mysql.com/downloads/installer/
account는 따로 만들지 않고 아래에 깨알처럼 쓰여있는 'no thanks, ' 를 누르고 다운로드를 시작한다.
그런데 보니까 내 랩탑에 Visual studio 2019 c++ 인가 파일이 없어서 여러 패키지들이 install 될 수 없다고 나왔다.
그래서 execute 옵션을 누르고 next를 하니까 나머지는 자동으로 install 옵션에 들어갔다. 이 부분을 놓치면 안 될 것 같으니 주의하자.
workbench, router 같은 옵션들이 제외될 뻔 했다.
고대로 계속 execute > next > execute > next 과정을 반복하고 최종으로 workbench와 shell 이 뜨면 successfully installed 된 것이다!
- MySQL 을 명령 프롬프트에서 사용하는 커맨드는 다음과 같다.
mysql -u [계정] -p [데이터베이스]
하지만 계정을 따로 안만들었거나, 최상위 계정으로 접속하려면 root를 쓰면 된다.
mysql -u root -p
돌려보니 안 된다. 찾아보니 환경변수에 따로 MySQL 서버 경로를 추가해 줘야 한다.
D. MySQL DB 생성
아래와 같이 외부 접속이 가능하도록 지정해준다고 한다. 아직은 왜 필요한 과정인지는 모르겠다. 알게 되면 추가하겠다.
외부 ip를 사용해서 접근할 수 있도록 (?) 하기 위해서 settings.py 파일의 ALLOWED__HOSTS = [ ] 에 'localhost'~ '외부 ip' 까지 추가 해준다. 외부 ip는 cmd 창에 ipconfig을 쳤을 때 나오는 IPv4 주소에 해당한다.
사실 파이참에서 Tools 옵션을 통해서도 실행할 수 있는데, 내 파이참에서는 뜨지 않아서 (아마 애초에 파이참과 연동하지 않아서 그런 것 같다.)
그래서 커맨드에서 내 장고 가상환경을 열고
python manage.py startapp 생성할_앱_이름
으로 새로운 앱을 만들어줬다.
REFERENCE
1. MySQL 설치 관련
2. 파이썬 웹 서버 관련. 외부 접근 허용을 위한 고유 ip 등 관련 내용
3.
docs.djangoproject.com/en/3.1/topics/db/models/
duzi077.tistory.com/128?category=703147
cjh5414.github.io/django-rest-framework-imagefield/
'모바일앱 프로젝트' 카테고리의 다른 글
Django + Android + MySql (2) (0) | 2021.02.24 |
---|---|
RESTful API 만들기 (0) | 2021.02.23 |
깃허브에 작업 폴더 전체 저장하기 (0) | 2021.02.22 |
윈도우 커맨드 (0) | 2021.02.22 |
Django + Jupyter notebook + Deep learning (0) | 2021.02.22 |
댓글