본문 바로가기
모바일앱 프로젝트

Django + Android + MySql (2)

by Nicole 2021. 2. 24.

지난 포스팅이 길어져 두 번째 파트로 나누려고 한다.

지난 번 포스팅에서는 Django 와 MySql을 연동했다.

이 포스팅은 안드로이드와 django를 연동한다.

 

우선 어제 djangorestframework 를 install 했는데, 그 부분이 진행되어 있어야 further 진행할 수 있다.

 

아침에 일어나서 진행할 부분은

1) RESTapi 프레임워크 구성

우선 127.0.0.0:8000/admin 에 접근하기 위해서 superuser 계정을 만든다.

내 mysql 패스워드와 같이 지정해줬다.

이제 위에 생성한 계정으로 127.0.0.0:8000/admin 에 접속을 할 수가 있다. 들어가면 기본으로 groups랑 users가 있다. 일단 이제 파이참의 models.py로 가서 MySQL 쿼리문 형식이 아닌 ORM 형식으로 테이블을 생성해준다.

models.py 파일은 수정을 해 줄 때마다 커맨드 창에 다음을 쳐줘야 한다.

$ python manage.py makemigrations myapp
$ python manage.py migrate

 

2) 레퍼런스 1 링크 를 참고해서 json 형식 데이터를 저렇게 post하고 get 해봤다. 그대로 진행하다가 urls.py에서 views가 import가 안된다느니 하는 문제 때문에 장장 4시간을 헤매이면서 앓다가 그냥 코드를 복붙해보니까 갑자기 돌아간다. 왜냐? ^기호가 여러 개냐? 아무리 봐도 이유를 모르겠다. 역시 인터넷에 쳐봤을 때 에러내용이 많이 안 나오는건 그런 에러가 사소한 실수 때문인 것이다...

127.0.0.0:8000/posts/ 로 접근해서 post로 json data 넣고, get으로 누적 데이터를 조회해 볼 수 있다.

 

3) 서버 테스트

Django 서버를 테스트 할 때 웹 어플리케이션의 경우는 로컬 서버로 바로 확인이 가능하지만, Android 모바일 어플리케이션에서 서버를 사용하고자 하면, 별도의 서버가 필요하다고 한다.

어플리케이션을 배포한다면 돈을 내고 호스팅을 해야겠지만.

지금은 테스트부터 급하기 때문에 ngrok 이라는 프로그램을 다운 받았다.

내 PC를 테스트용 홈서버로 만드는 방법이다.

 

이제는 두 번째 링크를 타고 가서 안드로이드에서 저 결과들을 띄워보려고 한다.

https://ngrok.com/download 에 가서 본인 운영체제에 맞는 프로그램을 다운 받고 설치 파일을 실행한다.

그리고 django server를 실행하는데, 이 때 manage.py 경로에서 0.0.0.0:8000 로 ip를 명시해준다.

이는 어떤 호스트의 ip를 다 받아준다는 의미이다.

그리고 django 프로젝트 내 settings.py 의 ALLOWED_HOSTS = [ ..., '*'] 로 '*' 를 추가해줬다.

그리고 ngrok을 실행해보면 커맨드 창이 뜬다.

그 때,

ngrok http 8000 (자기가 연 포트번호) 로 연결해주면 다음과 같이 노란 밑줄 부분처럼 주소가 임의의 주소가 부여되고, 저 주소가 내 PC의 주소로 포워딩 된다.

아 참고로 당연한거지만, 매번 다른 주소가 부여되니 추후에 이 주소를 사용하는 안드로이드 코드에서도 매번 새로운  주소 값을 넣어줘야 한다.

 

그래서 내 폰에서 저 주소로 접속해보면 다음과 같은 화면이 뜬다.

모바일 디바이스로 해당 주소에 접근하면 아까 웹에서 볼 수 있었던 화면이 나온다. 이제 이 주소로 안드로이드에서 접근하여 데이터를 전송해보도록 한다.

 

4) JAVA 코드를 사용한 연동 테스트

이 실험은 2번 레퍼런스의 코드를 사용하여 테스트 해보았다. 사실 웹만 써보고 안드로이드로 플젝이 첨이라 몰랐는데, 저 레퍼런스 사이트를 따라가다 보면 막히는 부분이 몇 있었다.

 

* 우선 grade.build 에 라이브러리 추가하기

 

grade.build 파일은 모듈의 빌드 방법이 정의된 빌드스크립트로서 빌드에 사용할 SDK버전, 어플리케이션 버전, 사용할 라이브러리 등 다양한 항목을 설정할 수 있다.

안드로이드에서 프로젝트를 생성하면, 프로젝트 전체에 적용이 되는 grade.build 스크립트(모든 모듈에 대한 공통 구성) 과 특정 module 에만 적용되는 grade.build 스크립트이 있다.

 

해당 코드를 돌려 에뮬레이터에서 확인해보면 결과가 잘 나온다.

에뮬레이터 실행 결과

아까 로컬 서버에서 입력했던 json 데이터를 get하면 위와 같은 화면을 볼 수 있고, post를 클릭하면 안드로이드라는 이름으로 데이터가 전송된다.

안드로이드에서 POST 된 데이터도 서버에서 GET 할 수 있다.

이로서 연동은 일단락 되었다.

이제 다음 포스팅에서는 이미지를 주고 받고자 한다.

 

 

REFERENCE

freekim.tistory.com/4

 

Django REST framework 예제

1. Restframework 설치  - 터미널에 아래의 명령어를 입력시켜 준다. pip install djangorestframework  - settings.py 에 rest framework 추가 해준다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.co..

freekim.tistory.com

2) 안드로이드 (java) 사용 연동

freekim.tistory.com/6

 

[Android] Retrofit 을 이용한 RestAPI Android 연동 예제

https://freekim.tistory.com/4 Django REST framework 예제 1. Restframework 설치 - 터미널에 아래의 명령어를 입력시켜 준다. pip install djangorestframework - settings.py 에 rest framework 추가 해준다...

freekim.tistory.com

'모바일앱 프로젝트' 카테고리의 다른 글

이미지 처리  (0) 2021.02.25
Django + Android 이미지 주고 받기 (3)  (0) 2021.02.24
RESTful API 만들기  (0) 2021.02.23
Django + Android + MySQL (1)  (0) 2021.02.23
깃허브에 작업 폴더 전체 저장하기  (0) 2021.02.22

댓글