텍스트와 다르게 이미지를 저장하려면 많은 수고가 든다.
1) Settings.py에서 이미지 파일을 저장할 베이스 폴더(media) 경로를 설정한다.
1 2 | MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, "media") | cs |
2) Urls.py에서 개발 중에 미디어 파일(이미지, 비디오 등)을 다루기 위한 세팅
(단, DEBUG 상태에서만 가능하도록 if문을 별도로 작성)
1 2 3 4 5 6 | from django.conf import settings from django.conf.urls.static import static if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) | cs |
3) Models.py에서 이미지 필드 만들기
1 | image = models.ImageField() | cs |
*이미지 필드 사용시 Pillow(https://pillow.readthedocs.io/en/latest/)라는 라이브러리 설치가 migrate 과정에서 요구된다.
(내가 올리는 이미지 파일의 포맷을 도와준다)
4) Forms.py에서 이미지 필드 지정하기
1 2 3 4 5 6 | class Form(ModelForm): class Meta: model = fields = ( 'image' ) | cs |
5) 템플릿에서 폼에 이미지 파일을 입력 받기 위해 이미지 전송을 위한 별도의 속성을 추가한다
1 | <form enctype="multipart/form-data" method="post" action=""> | cs |
4) View에서 폼을 통해 입력 받은 이미지를 폼에 두고자 이미지 소스(request.FILES)를 데이터 소스와 같이 둔다.
1 2 | if request.method == "POST": form = Form(request.POST, request.FILES) | cs |
'코딩 연습 > Django' 카테고리의 다른 글
객체 지우기 (0) | 2018.12.02 |
---|---|
2개의 폼(추가, 수정)에 1개의 템플릿만 사용하기 (0) | 2018.12.02 |
쿼리 연습하기 (0) | 2018.12.01 |
모델 폼에서 입력한 데이터를 다시 불러 수정하기 (0) | 2018.12.01 |
ModelForm을 통해 입력 받은 값 View에서 처리하기 (0) | 2018.11.30 |