天天看點

django使用admin站點上傳圖檔

Django有提供檔案系統支援,在Admin站點中可以輕松上傳圖檔。使用Admin站點儲存圖檔,需要安裝Python的圖檔操作包

pip install Pillow           

1 配置 

預設情況下,Django會将上傳的圖檔儲存在本地伺服器上,需要配置儲存的路徑。我們可以将上傳的檔案儲存在靜态檔案目錄中,如我們之前設定的static_files目錄中在settings.py 檔案中添加如下上傳儲存目錄資訊

MEDIA_ROOT=os.path.join(BASE_DIR,"static_files/media")           

2 為模型類添加ImageField字段 

我們為之前的BookInfo模型類添加一個ImageFiled

class BookInfo(models.Model):
    ...
    image = models.ImageField(upload_to='booktest', verbose_name='圖檔', null=True)           

upload_to 選項指明該字段的圖檔儲存在MEDIA_ROOT目錄中的哪個子目錄,進行資料庫遷移操作

python manage.py makemigrations
python manage.py migrate           

3 使用Admin站點上傳圖檔 

進入Admin站點的圖書管理頁面,選擇一個圖書,能發現多出來一個上傳圖檔的字段admin站點圖檔字段,選擇一張圖檔并儲存後,圖檔會被儲存在

static_files/media/booktest/

目錄下。

在資料庫中,我們能看到image字段被設定為圖檔的路徑

django admin圖檔上傳,更改路徑和圖檔名稱

1.自定義 上傳圖檔的儲存路徑和,圖檔名稱格式。

def upload_path_handler(instance, filename):

    filename="ewn1.jpg"#圖檔名稱

    return "photos/{id}/{file}".format(id=instance.photo.title, file=filename)    #儲存路徑和格式

2.models

class Picture(models.Model):

    title = models.CharField('圖檔标題',max_length=100)

    image = models.ImageField('圖檔',upload_to=upload_path_handler, null =True, blank=True)

    summary = models.CharField('說明',max_length=100)

    photo=models.ForeignKey(Photo,verbose_name=u'相冊')