VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Django xadmin图片上传与缩略图处理

基本摘要

python django开发时,个人选中Xadmin后台管理系统框架,因为它*内置功能丰富, 不仅提供了基本的CRUD功能,还内置了丰富的插件功能。包括数据导出、书签、图表、数据添加向导及图片相册等多种扩展功能。但是上传图片时想实现图片文件重命名并生成图片预览图时,从网上找了一些大牛写的代码,在自己的项目中出错,所以自己摸索找到使用django-stdimage(参考官方文档)生成预览图+图片重命名的解决办法,代码如下:

  • step 1. 安装

1
pip install django-stdimage==3.2.0 -i "https://pypi.doubanio.com/simple/"
  • step 2. 配置settings.py

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INSTALLED_APPS = [
 
    'django.contrib.admin',
 
    'django.contrib.auth',
 
    'django.contrib.contenttypes',
 
    'django.contrib.sessions',
 
    'django.contrib.messages',
 
    'django.contrib.staticfiles',
 
    'stdimage',  #记得一定要添加进入
 
]
  • step 3. 配置models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from datetime import datetime
from stdimage.models import StdImageField
from stdimage.utils import UploadToUUID
 
class Banner(models.Model):
    title = models.CharField(max_length=100, verbose_name=u"标题")
    image = StdImageField(max_length=100,                     
    upload_to=UploadToUUID(path=datetime.now().strftime('banner/%Y/%m')),
                          verbose_name=u"轮播图",
                          variations={'thumbnail': {'width': 100, 'height': 75}})
    url = models.CharField(max_length=100, verbose_name=u"访问地址")
    index = models.IntegerField(default=100, verbose_name=u"顺序")
    add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
 
    class Meta:
        verbose_name = u"轮播图"
        verbose_name_plural = verbose_name
 
    def image_img(self):
        if self.image:
            return str('<img src="%s" />' % self.image.thumbnail.url)
        else:
            return u'上传图片'
 
    image_img.short_description = '轮播图'
    image_img.allow_tags = True
 
    def __str__(self):
        return '{0}(位于第{1}位)'.format(self.title, self.index)