emluy 개발 일기

Django 웹 12 - (portfolio) Media 파일 업로드 본문

웹 개발/Django

Django 웹 12 - (portfolio) Media 파일 업로드

yulme 2020. 5. 11. 19:31
SMALL

* Static vs Media

- Static: 외부와 통신 x

- Media: 외부와 통신 o   (url로 통신)

 

setting 11에 이어서

- 프로젝트 폴더 : blogproject

- 앱폴더 : blogapp, portfolio

 

 

 

 1. settings.py에 media 설정(directory, url설정)

#blogproject 의 settings.py 

- MEDIA_ROOT = os,path.join(BASE_DIR,'media')   :  최상위 directory의 media 폴더에 파일들 모을 것임

- MEDIA_URL = '/media/'   :   ex)'기본홈페이지url/media/파일내용' ->이런식으로 url에 나타날것임 

  

 

 

 

 

2. urls.py 설정

: 다음과 같이 코드 추가 

#blogproject의 urls.py

1번에서 작성한 /media/가져오기 위함 

 

 

 

 

3. models.py 에서 업로드 될 데이터 (이미지, 워드파일 등등 ) class 정의

:url을 타고 들어온 파일을 저장해줌

#portfolio 앱 폴더의 models.py

- title : 이미지 제목 저장 

- image : 업로드 되는 이미지를 저장, 어디에? upload_to = 'images/'에 (media 폴더 하위에 있는 images 폴더)

- description : 이미지 설명 저장

 

 

 

 

4. DB에 반영 (migrate)

* 그전에! 이미지를 DB에 저장하기 위해서는 pillow 설치 필요 (파이썬으로 이미지 다루기 위한 library)

-  $python manage.py makemigrations

-  $python manage.py migrate

 

 

 

 

 

5. admin.py에 Class를 register 해줌

#portfolio 앱 폴더의 admin.py 

 

 

 

6. views.py에 모든 객체 내용 보주는 함수 정의 

#portfolio 앱 폴더의 views.py

 

 

 

7. html에 띄우기

밑의 portfolio.html에서 그림 띄우는 부분에 해당하는 코드 수정할 것임

#setting 11 게시물의 결과

** 수정할 부분 : 이미지 나오는 부분 <div class = "col-md-4">

#portfolio.html

**수정 후

- 1번째 네모, 3번째 네모 : views.py 함수에 있는 portfolios 를 가져와서 for문으로 띄움

- 2번째 네모. :  이미지 어디서 가져오는지 알려주는 src에 {[portfolio.image.url]}      ->     portfolio 객체에 저장된 image를 url통해서 가져옴

 

 

 

 

 

결과

 #portfolio.html

반응형
Comments