본문 바로가기
카테고리 없음

django) 장고 다중 이미지 업로드

by 빈스터디 2023. 2. 27.

0. 이전 게시물인 이미지 파일 업로드하기에서 추가되는 부분이니, 참고하면 좋을 것 같다.

 

https://beenstudy2023.tistory.com/66

 

django) 장고 이미지 파일 업로드하기

→ DB 데이터 속성 설정, 이미지 관련 파일 설치, 마이그레이션 1. app01 > models.py에 mage라는 속성을 클래스 안에 입력한다. 2. pillow라는 이미지 관련 프로그램 설치한다. pip install pillow 3. 마이그레이

beenstudy2023.tistory.com

 

 

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. 이미지 파일을 여러 개 선택하여 업로드 하면 여러 개의 파일이 업로드 되어있는 것을 확인할 수 있다.

파일 선택

 

업로드 버튼 눌렀을 때

 

업로드 된 모습