0. 이전 게시물인 이미지 파일 업로드하기에서 추가되는 부분이니, 참고하면 좋을 것 같다.
https://beenstudy2023.tistory.com/66
1. 게시물과 이미지는 1:N 관계이다. 게시물이 1이고, 이미지가 N이다.
따라서, models.py에 BoardImage 클래스를 추가한다. *Board 클래스도 있음(0번 참고)
게시물을 외래키로 지정함.
class BoardImage(models.Model):
board = models.ForeignKey(Board, on_delete=models.CASCADE)
image = models.ImageField(blank=True, upload_to="image")
2. 마이그레이션한다.
python .\manage.py makemigrations
python manage.py migrate
3. views.py에서 upload 함수를 다음과 같이 수정한다.
게시물을 먼저 읽어오고, image는 리스트로 받아서 for문을 돌린다.
게시물에 여러 개의 이미지를 넣기 위한 작업이다.
def upload(request):
if request.method=='GET':
return render(request,"upload.html")
elif request.method == 'POST':
title = request.POST.get('title',None)
contents = request.POST.get('contents',None)
post = Board()
post.title = title
post.contents = contents
post.save()
images = request.FILES.getlist("image")
for image in images:
boardImage = BoardImage()
boardImage.board = post
boardImage.image = image
boardImage.save()
return HttpResponse("업로드 완료")
4. upload.html 파일의 이미지 업로드 부분에 multiple을 추가한다.
5. 이미지 파일을 여러 개 선택하여 업로드 하면 여러 개의 파일이 업로드 되어있는 것을 확인할 수 있다.