반응형
저는 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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python Flask 앱의 settings.py에서 os.getenv ()를 사용하는 이유는 무엇입니까? (0) | 2020.09.13 |
---|---|
파이썬 Python-JSONDecodeError : 큰 따옴표로 묶인 속성 이름이 필요합니다. (0) | 2020.09.13 |
파이썬에서 평균과 분산 계산 (0) | 2020.09.13 |
파이썬 지속적으로 웹 스크래핑하는 Flask 앱 배포 옵션 (0) | 2020.09.12 |
파이썬 Python은 행 수가 다른 CSV 파일을 읽습니다. (0) | 2020.09.12 |
댓글