亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 在媒體文件夾中創建另一個媒體文件夾

Django 在媒體文件夾中創建另一個媒體文件夾

一只斗牛犬 2023-07-18 13:44:34
我是 Django 的初學者,這正是它的作用。我按照文檔中的說明進行操作,但無論如何,也許出了什么問題?從管理頁面我添加\設置產品并選擇“圖像”,然后當我保存它時創建縮略圖并嘗試保存在“/media/uploads/”中,但它創建另一個“媒體”文件夾當站點路徑為“/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/”,然后它以正確的方向存儲文件,但現場路徑也更改為“/uploads/img.png”,而它必須是“/media/uploads/img” .png'有什么問題嗎?謝謝!
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

參數upload_to=…[Django-doc]是相對于MEDIA_ROOT.?因此,如果您想將其存儲在目錄uploads中的某個目錄中media,請使用以下命令上傳:

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

然而,為了呈現URL,您需要使用.url屬性 [Django-doc],因此:

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

這里有{% if p.thumbnail %}必要檢查NULL/None值。


查看完整回答
反對 回復 2023-07-18
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

這是因為你寫了“upload_to='media/uploads'”..從你的設置中django將創建媒體文件夾,并且由于你寫了“media/uploads”,uploads位于媒體文件夾內,該文件夾位于設置中聲明的主媒體內。所以就寫


class Product(models.Model):

thumbnail = models.ImageField(upload_to='uploads/', blank=True, null=True)


查看完整回答
反對 回復 2023-07-18
  • 2 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號