본문 바로가기
PROJECT/MYPJ

RE_PROJECT 01 | 이미지 파일 업로드하기

by JUNG씨 2022. 10. 15.

✅ 이미지 파일 업로드하기 ✅

 

 

✔️ instagram/settings.py 에 추가

import os

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

: 이미지 파일이 media 폴더에 저장되는 것을 확인할 수 있다!!

 

 

 

✔️ pillow 패키지 설치

pip install pillow

➡️ 이미지파일을 업로드하기 위해서는 pillow 패키지를 설치해야한다!

 

 

 

✔️ tweet/models.py 에서 image 필드 추가

image = models.ImageField(upload_to = "images/")

 

 

✔️ instagram/urls.py에 url 추가

# 이미지를 업로드하자
from django.conf.urls.static import static
from django.conf import settings


# 이미지 URL 설정
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

 

 

 

✔️ tweet/views.py 에서 image 코드 추가

all_image = TweetComment.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'tweet': all_tweet, 'comment': all_comment, 'image': all_image})

: (GET)  저장된 이미지를 모두 보여준다.

 

 

image = request.FILES.get('image', '')
my_tweet = TweetModel.objects.create(author=user, content=content, image=image)

: (POST) 이미지 파일을 FILES로 저장해서 받아주고, my_tweet에 user, content, image를 저장해준다.

 

 

 

 

✔️ templates/tweet/home.html 수정

<a href="/tweet/{{ tw.id }}">
  {% if tw.image %}
  <img class="feed_img" src="{{ tw.image.url }}">
  {% else %}
  <img class="feed_img" src="https://blog.kakaocdn.net/dn/cEftca/btqAgU7ckZC/2JaB2RLUkvskP7TqowbTLk/img.png">
  {% endif %}
</a>

: 게시글을 작성할 때 이미지가 있으면 그 이미지를 보여주고, 추가한 이미지가 없으면 기본 이미지로 게시되도록 설정!