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

Django + Android 이미지 주고 받기 (3)

by Nicole 2021. 2. 24.

일단 이틀에 걸친 험난한 연동이 아마도 일단락 된 것 같다.

구글링 해본 결과 Mysql을 사용해서 직접적으로 이미지를 전달할 수는 없고,

바이너리화 하여 json에 포함시켜 주고 받거나,

아예 별도의 데이터 저장소에 저장하고 그 위치에 대한 주소를 json 에 포함시키는 방법이 있는 것 같았다.

나는 두 번째 방법으로 구현해보려고 한다.

 

 

1) 프로젝트 root 디렉토리에 media 폴더 만들기

settings.py 에 위의 코드를 추가해준다.

MEDIA_URL 은 media 폴더에 들어오는 이미지 파일들에 대한 고정 url을 지정해주는 것이고,

데이터베이스에는 이미지의 주소만 저장을 하도록 구현하기 때문에, 

실제 파일이 저장되는 경로를 root로 한다.

 

다시 말하면, MEDIA_URL에 대한 request가 들어오면 MEDIA_ROOT 에서 처리가 되는 것이다.

 

2) urls.py 에 url 추가해주기

...

# FOR IMAGE IMPLEMENTATION AND + static url 부분
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

 

위의 파일들을 import 해주고 url 패턴에 static 부분을 추가해준다.

 

3) models.py 에 image 필드 추가하기

class Post(models.Model):
    title = models.CharField(max_length=200)
    text = models.TextField()
    
    image = models.ImageField(default='media/default_image.jpg')

기존 작업 해 놓은 데에서 위와 같이 image 변수명의 이미지 필드를 추가해준다.

 

 

4) serializers.py 에 image 필드를 추가

class PostSerializer(serializers.ModelSerializer):
    image = serializers.ImageField(use_url=True)

    class Meta:
        model = Post
        fields = ('title', 'text', 'image')

RestFramework 에서 사용하는 serializer.py 에 이미지 필드를 추가한다.

또한 Meta class의 fields 에 'image' 값을 추가한다.

use_url 을 True 로 선언해 주면 output으로 URL String 이 내려오고 False 이면 File Name 이 output 으로 나온다고 한다.

 

5) Migration 작업

역시 model을 업데이트 한 경우에 매번 진행해줬듯이,

$ python manage.py makemigrations

$ python manage.py migrate

를 진행해준다.

 

 

작업을 완료하고

$ python manage.py runserver

를 하고 127.0.0.0:8000/posts 주소에 접근하면 image 필드가 생성된 것을 볼 수 있다.

 

이미지 필드에는 저렇게 media 경로에 input으로 들어간 이미지가 저장되고, 링크를 클릭하면 

 

내가 올린 귀여운 푸 사진이 나오고.

당근 media 폴더에도 사진이 들어가 있다.

 

 

오늘은 django + mysql + Android 연동을 끝내고 json 포맷으로 text 데이터를 주고 받아 보았다.

그리고 image 데이터를 올려보는 것까지 진행했다.

 

다음 순서는 두구두구

저 이미지 데이터를 앞앞앞앞앞에서 사용한 이미지 처리 딥러닝 기술로 처리해보는 것이다.

꺄~

 

 

 

REFERENCE

1) 이미지 처리 방법

cjh5414.github.io/django-rest-framework-imagefield/

 

Django REST Framework ImageField 이용하기

Jihun's Development Blog

cjh5414.github.io

 

2) 동일. 이 분 블로그에서 유익한 정보를 많이 얻었다.

freekim.tistory.com/9?category=887076

 

[Django] RestFramework Image file upload ImageField

서버시나리오에서 빠지지 않는 기능은 이미지를 업로드 하고 보는 기능이다 RestFramework 을 이용하면 ImageField 를 활용하여 쉽게 Image를 업로드 할 수 있다. 기존에 사용했던 Model에 ImageField를 추가

freekim.tistory.com

 

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

[안드로이드 스튜디오] 기본 (1)  (0) 2021.02.27
이미지 처리  (0) 2021.02.25
Django + Android + MySql (2)  (0) 2021.02.24
RESTful API 만들기  (0) 2021.02.23
Django + Android + MySQL (1)  (0) 2021.02.23

댓글