반응형
이미지 사용하기
- 사용자로부터 이미지를 받고 이를 처리하기 위해선 별도의 처리가 필요하다.
settings.py
- settings.py에 이미지의 경로를 설정하는 코드를 추가한다.
- 우리는 이미지를 루트디렉토리의 media 폴더에 넣어줄 것이다.
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
- MEDIA_ROOT : 이미지가 저장될 경로
- MEDIA_URL : 이미지가 사용될 때 표현될 URL
models.py
- 우리가 사용할 model class에 이미지 필드를 추가해준다.
image = models.ImageField(upload_to='appname', null=True)
- 이렇게하면 사용자가 모델에 입력한 이미지파일은 'appname/이미지파일명'으로 저장된다. appname은 표기해두었듯이 현재 사용중인 app의 이름으로 설정하는 것이 관리하기 용이하다.
Pillow 라이브러리
- 이미지 필드는 내부적으로 Pillow라는 라이브러리를 사용하기 때문에 설치해야 한다.
pip install Pillow
templates (html from)
- 사용자가 이미지를 저장할 수 있는 페이지를 작성한다.
<form action="{% url '목표 url' %}" method="POST" enctype="multipart/formdata">
<input type="file" name='image'>
</form>
- enctype을 'multipart/formdata'로 설정해야 정상적으로 담긴다.
- 이미지를 받을 수 있도록 input의 type은 'file'로 설정한다.
views.py
- views.py의 메소드에서 해당 파일을 받아와야 한다.
if 'image' in request.FILES:
image = request.FILES['image']
- 이미지 파일은 별도로 FILES에 작성되기 때문에 해당 위치를 통해 접근한다.
- 보통 if문과 함께 받아온다.
templates (html to)
- 그렇게 담긴 image 오브젝트는 바로 접근할 수 없고, 'image.url'로 접근해야 정상적으로 접근된다.
- 따라서 {% image.url %}과 같은 형식으로 받아와야 한다. (물론 데이터 전달방법에 따라 조금씩 바뀔 수는 있다.)
- url 외에도 다른 옵션이 있지만, 일단 이미지를 출력하도록 하는 것은 image.url이다.
반응형
'🛠 기타 > WEB' 카테고리의 다른 글
Node.js - express 시작 (0) | 2020.10.13 |
---|---|
Node.js - 설치 / NPM (0) | 2020.10.12 |
django 기초 - templates 관리하기 (base.html) (0) | 2020.09.13 |
django 기초 - app 단위별로 url 정리하기 (0) | 2020.09.13 |
django 기초 - CSS파일 연결하기 (0) | 2020.08.24 |