[django] 미디어 파일 관리하기

haremeat·2021년 12월 1일
1

Django

목록 보기
5/15
post-thumbnail

포스트에 이미지 올리기

장고는 이미지 업로드를 위한 ImageField를 제공한다.
ImageField를 사용하려면 사용자가 업로드한 이미지를 어디에 저장할지 먼저 설정하고 업로드된 이미지들이 모여 있는 폴더의 URL을 어떻게 할지도 설정해야 한다.

settings.py 파일로가서 다음 코드를 추가한다.

import os

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

이미지 파일은 '_media'라는 이름의 폴더를 만들고 그 안에 저장하도록 설정했다.
그리고 MEDIA_URL는 /media/로 지정했다. 웹 브라우저에서 도메인 뒤에 /media/라는 경로가 따라오면 미디어 파일을 사용하겠다는 의미다.

그 후 /blog/model.py 파일로 가서

head_image = models.ImageField(upload_to='blog/images/%Y/%m/%d', blank=True)

위 코드를 추가한다.
이는 이미지를 저정할 푤더의 규칙을 지정한 것이다.
blank=True는 해당 필드는 필수 항목은 아니라는 뜻이 된다. 즉 포스트를 작성할 때 반드시 이미지를 업로드할 필요가 없다.

from django.db import models

# Create your models here.

class Post(models.Model):
    title = models.CharField(max_length=30)
    content = models.TextField()

    head_image = models.ImageField(upload_to='blog/images/%Y/%m/%d', blank=True)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    

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

    def get_absolute_url(self):
        return f'/blog/{self.pk}'

Ref

장고 + 부트스트랩 파이썬 웹 개발의 정석

profile
버그와 함께하는 삶

0개의 댓글