django通过自带的ImageField可以实现图片上传,如果想在列表页面也显示图片缩略图的话,可以用django-stdimage插件来实现
1,pip install django==2.1.8
2,pip install pymysql
3,pip install dajngo-stdimage==4.0.1
4,pip install xadmin
xadmin没有配置的可以按照这个地址去配置: https://blog.csdn.net/qq_42543264/article/details/99078971
upload_to是图片保存到media下的地址,自动创建
thumbnail可以控制图片在后台显示的大小
class BannerLogo(models.Model):
"""logo管理"""
lg_name = models.CharField(max_length=50, verbose_name=u'名称')
image = StdImageField(upload_to='path/to/logo', blank=True,
variations={'thumbnail': (100, 75)},
verbose_name=u'url'
)
up_time = models.DateTimeField(default=datetime.now, verbose_name=u'上传时间')
class Meta:
db_table = 'banner_logo'
verbose_name = u'logo管理'
verbose_name_plural = verbose_name
def image_img(self):
return u'
'% (self.image.thumbnail.url)
image_img.short_description = '图片'
image_img.allow_tags = True
def __str__(self):
return self.lg_name
class BannerXadmin(object):
list_display = ['lg_name', 'image_img', 'image', 'up_time']
search_fields = ['lg_name', 'up_time']
list_filter = ['lg_name', 'image', 'up_time']
#注册logo
xadmin.site.register(BannerLogo, BannerXadmin)
我的表结构:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", '/')
django2.+版本和django1.+的版本略有不同,本次操作以2.+以上版本为例
from django.urls import path
from django.conf.urls import re_path
from django.conf.urls import include
import xadmin
from django.views.static import serve
from .settings import MEDIA_ROOT
urlpatterns = [
path('xadmin/', xadmin.site.urls), #后台管理
# 处理图片显示的url,使用Django自带serve,
# 传入参数告诉它去哪个路径找,我们有配置好的路径MEDIAROOT
re_path(r'^media/(?P.*)$', serve, {"document_root": MEDIA_ROOT}),
]
以上就是使用django-stdimage插件实现上传图片功能,有什么疑问可以在下方留言,谢谢大家的支持