본문 바로가기
파이썬

파이썬 Django는 미디어 폴더 안에 다른 미디어 폴더를 만듭니다.

by º기록 2020. 9. 13.
반응형

저는 Django의 초보자이고 그것이 정확히하는 일입니다. 문서에있는 그대로 수행하지만 어쨌든 뭔가 잘못되었을 수 있습니까?

관리자 페이지에서 제품을 추가 / 설정-업하고 '이미지'를 선택한 다음 썸네일을 생성하고 '/ media / uploads /'에 저장하려고하지만 대신 다른 'media'폴더를 생성합니다. 사이트의 경로가 '/media/uploads/img.png'인 경우 '/media/media/uploads/img.png'에 저장된 이미지입니다. 다음은 코드입니다.

/shop/settings.py:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # or even 'media/'

/shop/urls.py:
urlpatterns = [
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

추가 한 후 내 제품 모델에서 다음을 수행합니다.

/apps/store/models.py:
class Product(models.Model):
    ...
    image = models.ImageField(upload_to='media/uploads/', blank=True, null=True)
    thumbnail = models.ImageField(upload_to='media/uploads/', blank=True, null=True)
    ...

    def save(self, *args, **kwargs):
        self.thumbnail = self.make_thumbnail(self.image)
        super().save(*args, **kwargs)

    @staticmethod
    def make_thumbnail(image, size=(512, 512)):
        if not image:
            return

        img = Image.open(image)
        if img.mode in ('RGBA',):  # converting image to RGB if it's RGBA
            img.load()
            rgb_convert = Image.new('RGB', img.size, 0)
            rgb_convert.paste(img, mask=img.split()[3])
            img = rgb_convert

        img.thumbnail(size)

        thumb_io = BytesIO()
        img.save(thumb_io, 'PNG', quality=80)
        thumb = File(thumb_io, name=image.name)
        return thumb

'upload_to'를 'uploads /'로 변경 한 다음 올바른 방향으로 파일을 저장했지만 현장 경로도 '/ media / uploads / img'여야 할 때 '/uploads/img.png'로 변경됩니다. .png '

무엇이 잘못 될 수 있습니까? 감사!

 

해결 방법

 


class Product(models.Model):
    # …
    thumbnail = models.ImageField(upload_to='uploads/', blank=True, null=True)


{% if p.thumbnail %}
    <img src="{{ p.thumbnail.url }}">
{% endif %}

여기에서 NULL / None 값을 확인하려면 {% if p.thumbnail %} 가 필요합니다.

 

참조 페이지 https://stackoverflow.com/questions/63758482

 

 

반응형

댓글