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'相冊')

 

將upload_to的值設置為upload_path_handler即可

 

以前總是想辦法繼承save方法,總是失敗。原來是思路錯了。。ok'!希望對大家有用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM