0
点赞
收藏
分享

微信扫一扫

django-stdimage实现上传图片功能并在xadmin后台显示(超详细,每个环节都有实例)


前言

django通过自带的ImageField可以实现图片上传,如果想在列表页面也显示图片缩略图的话,可以用django-stdimage插件来实现

Django Standardized Image Field

  • Django-Storages兼容(S3)
  • 将图像调整为不同大小
  • 访问模型级别的缩略图,不需要模板标签
  • 保留原始图像
  • 异步渲染(Celery&Co)
  • 多线程和处理以获得最佳性能
  • 限制接受的图像尺寸
  • 将文件重命名为标准化名称(使用可调用的upload_to)

配置环境

1,pip install django==2.1.8

2,pip install pymysql

3,pip install dajngo-stdimage==4.0.1

4,pip install xadmin

xadmin没有配置的可以按照这个地址

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'<img src="%s" />'% (self.image.thumbnail.url)

image_img.short_description = '图片'
image_img.allow_tags = True

def __str__(self):
return self.lg_name

admin.py

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)

我的表结构:

django-stdimage实现上传图片功能并在xadmin后台显示(超详细,每个环节都有实例)_显示图片

settings.py

MEDIA_URL = '/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", '/')

django-stdimage实现上传图片功能并在xadmin后台显示(超详细,每个环节都有实例)_django_02

urls.py

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<path>.*)$', serve, {"document_root": MEDIA_ROOT}),
]

以上就是使用django-stdimage插件实现上传图片功能,有什么疑问可以在下方留言,谢谢大家的支持

 

 

 

 

 

举报

相关推荐

0 条评论