日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python管理图片_Django 管理图片

發(fā)布時間:2025/4/5 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python管理图片_Django 管理图片 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Django 管理圖片

圖片的上傳

模型定義

model.py

class Image(models.Model):

image = models.ImageField(upload_to='images/%Y%m%d')

class Meta:

db_table = 'image'

verbose_name = '圖片'

verbose_name_plural = verbose_name

注冊到管理后臺

admin.py

@admin.register(Image)

class ImageAdmin(admin.ModelAdmin):

list_display = ('image',)

這時,在后臺就可以實現(xiàn)圖片的上傳了,顯然不是我們想要的,我們是想在前端HTML頁面上實現(xiàn)圖片上傳。

接下來:

前端頁面

{% csrf_token %}

enctype=“multipart/form-data” 允許表單提交文件,必須寫這一項。multiple=“multiple” 允許一次提交多個文件。

這里只需要選擇圖片的時候,Windows電腦按著Ctrl鍵。

views.py

def uploads_files(request):

if request.method == 'POST':

files = request.FILES.getlist('file_field')

for f in files:

file = Image(image=f)

file.save()

return redirect(reverse('article:add_article'))

else:

return

路由配置

path('uploads/', views.uploads_files, name='uploads'),

setting.py必須配置

STATIC_URL = '/static/'

STATICFILES_DIRS = [

os.path.join(BASE_DIR, 'static')

]

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

運行后,打開上傳的圖片頁面,這里我是在博客中插入的,可以根據(jù)自己的需求更改路徑.

支持多張圖片同時上傳呀。

admin后臺管理圖片。

在后臺管理圖片的時候,雖然可以查看圖片,不過需要點擊,很麻煩。

優(yōu)化:

修改model.py

增加部分內(nèi)容

from django.utils.html import format_html

class Image(models.Model):

....

....

def admin_image(self):

return format_html(

'',

self.image.url,

)

admin_image.short_description = u'圖片'

admin_image.allow_tags = True

admin.py后臺添加字段admin_image

@admin.register(Image)

class ImageAdmin(admin.ModelAdmin):

list_display = ('image', 'admin_image',)

這樣,我們就可以實現(xiàn)后臺顯示圖片的縮略圖了

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pKzj6zKf-1601751584640)(/pictures/Django/admin_up_img.jpg)]

文件或圖片的上傳位置和刪除問題

你以為完了嗎,不,還能優(yōu)化,不信你刪除一下試試,只是數(shù)據(jù)沒了,但是文件還存在,這種情況需要優(yōu)化。

model.py增加

from django.db.models.signals import post_delete

from django.dispatch import receiver

import os

# 重寫刪除文件功能,數(shù)據(jù)刪除的時候,文件也跟隨刪除

@receiver(post_delete, sender=Image)

def delete_upload_files(sender, instance, **kwargs):

files = getattr(instance, 'image', '')

if not files:

return

fname = os.path.join(settings.MEDIA_ROOT, files.name)

if os.path.isfile(fname):

os.remove(fname)

重寫上傳位置

def upload_to_con(instance, filename):

return '/'.join(

[MEDIA_ROOT, 'article_insert' + instance.image.url, filename])

class Image(models.Model):

image = models.ImageField(upload_to=upload_to_con)

遷移數(shù)據(jù),就ok了。

原文鏈接:https://blog.csdn.net/qq_42164596/article/details/108915712

總結

以上是生活随笔為你收集整理的python管理图片_Django 管理图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。