일단 이틀에 걸친 험난한 연동이 아마도 일단락 된 것 같다.
구글링 해본 결과 Mysql을 사용해서 직접적으로 이미지를 전달할 수는 없고,
바이너리화 하여 json에 포함시켜 주고 받거나,
아예 별도의 데이터 저장소에 저장하고 그 위치에 대한 주소를 json 에 포함시키는 방법이 있는 것 같았다.
나는 두 번째 방법으로 구현해보려고 한다.
1) 프로젝트 root 디렉토리에 media 폴더 만들기
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/
2) 동일. 이 분 블로그에서 유익한 정보를 많이 얻었다.
freekim.tistory.com/9?category=887076
'모바일앱 프로젝트' 카테고리의 다른 글
[안드로이드 스튜디오] 기본 (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 |
댓글