본문 바로가기
Python/Django

Django 이미지 업로드 및 출력하기

by HoneyIT 2022. 7. 29.

1. 파일 저장 및 전달

settings.py

admin에서 파일을 업로드하면 저장 될 패스를 지정합니다.

 

 

지정된 위의 경로로 파일이 저장됩니다.

 

 

urls.py

url에도 추가해줍니다.

 

 

2. Model 및 Admin 설정

 

model.py

class AwardImageUpload(models.Model):
    title = models.CharField(max_length=30, null=True)
    image = models.ImageField(upload_to='about_me/awards/%Y/%m/%d', blank=True)
    
    created_at = models.DateTimeField(null=True, blank=True)
    updated_at = models.DateTimeField(auto_now=True, null=True, blank=True)

    def __str__(self):
        return f'{self.title}'

CBV방식으로 이미지를 업로드할 수 있는 페이지를 admin에 추가합니다.

 

 

single_pages > admin.py

만들어진 클래스를 admin 페이지에 적용시킵니다.

 

 

$ python manage.py makemigrations
$ python manage.py migrate

모델을 추가했으니 잊지말고 마이그레이션을 해줍니다.

 

 

admin 페이지에 정상적으로 추가된 것을 확인할 수 있습니다.

 

 

클래스에서 설정한 제목, 파일, 날짜를 설정하고 저장합니다.

 

 

정상적으로 추가된 것을 확인할 수 있습니다.

 

 

지정한 경로에도 잘 생성되었습니다.

 

 

 

3. View 설정

 

view.py

def about_me(request):

    award_image = AwardImageUpload.objects.all()

    return render(
        request,
        'single_pages/about_me.html',
        {
            'award_image': award_image
        }
    )

about_me 템플릿으로 값을 가지고 넘깁니다.

 

 

about_me.html

{% for image in award_image.all %}
    <h1>{{image.title}}</h1>
    <img src="{{image.image.url}}" />
{% endfor %}

admin에서 작성한 제목과 이미지를 출력할 수 있습니다.