成功实现Django Admin图片上传与缩略图处理
来源:互联网 发布:淘宝网卖家信用高流量 编辑:程序博客网 时间:2024/06/05 08:33
经过一天的努力,终于实现了完全用Django的方式上传图片,并且可自动生成缩略图。过程是很郁闷的,因为网上搜索到的东西大都不完全。只是给点明一下。比较全面点的参考文章是http://imtx.me/archives/693.html。不过按照这上面说的,做完后会提示错误,如下:
IOError: [Errno 2] No such file or directory: '/Users/username/tests/upload/test.jpg' #后面的链接是上传的图片路径
也许是我的操作与作者的解说有不同。不过按照下面的方法可以比较清析的实现目的。还是贴代码吧。
首先,在自己创建的项目文件(models.py)中添加如下代码:
from __future__ import divisionimport osimport Imagefrom mysite.settings import MEDIA_ROOTfrom django.db.models.fields.files import ImageFieldFiledef make_thumb(path, size = 480): pixbuf = Image.open(path) width, height = pixbuf.size if width > size: delta = width / size height = int(height / delta) pixbuf.thumbnail((size, height), Image.ANTIALIAS) return pixbufclass Media(models.Model): title = models.CharField(max_length = 120) image = models.ImageField(upload_to = 'upload/') thumb = models.ImageField(upload_to = 'upload/thumb', blank = True) date = models.DateTimeField(auto_now_add = True) def save(self): super(Media, self).save() #将上传的图片先保存一下,否则报错 base, ext = os.path.splitext(os.path.basename(self.image.path)) thumb_pixbuf = make_thumb(os.path.join(MEDIA_ROOT, self.image.name)) relate_thumb_path = os.path.join(THUMB_ROOT, base + '.thumb' + ext) thumb_path = os.path.join(MEDIA_ROOT, relate_thumb_path) thumb_pixbuf.save(thumb_path) self.thumb = ImageFieldFile(self, self.thumb, relate_thumb_path) super(Media, self).save() #再保存一下,包括缩略图等 def __unicode__(self): return self.title
模型阶段的处理就完成了,接下来编辑同一项目下的admin.py文件。添加代码如下:
class MediaAdmin(admin.ModelAdmin): #这个是为了美观,防止意外,也可以不要 readonly_fields = ('thumb',) #因为不需要在后台修改该项,所以设置为只读 def get_readonly_fields(self, request, obj=None): if obj: # editing an existing object return self.readonly_fields return self.readonly_fieldsadmin.site.register(Media, MediaAdmin)
经过上面的处理,图片的上传与缩略图处理都可同时完成。还是先看下我的效果图:
1 0
- 成功实现Django Admin图片上传与缩略图处理
- Django上传图片生成缩略图
- django admin上传文件和图片
- Django显示admin上传的图片
- Django上传图片用PIL生成缩略图
- django admin图片上传,更改路径和图片名称
- asp.net 上传图片处理 水印 缩略图
- django中实现图片上传
- Django实现图片的上传
- swfupload实现图片及缩略图上传
- JQuery实现input上传图片显示缩略图
- thinkphp+uploadify上传图片,实现缩略图浏览
- JQuery实现input上传图片显示缩略图
- ajax+h5实现文件上传,成功即显示缩略图。
- php实现上传图片和等比例缩略图压缩图片
- 上传图片生成缩略图
- 上传图片生成缩略图
- 上传图片生成缩略图
- CSS标签宝典大全
- kettle spoon pentaho
- 买牛奶(南阳oj892)
- dd大牛的《背包九讲》
- [caffe]深度学习之图像分类模型AlexNet解读
- 成功实现Django Admin图片上传与缩略图处理
- cocos2dx-v3.0-图形绘制-draw()函数
- Mega Man’s Missions
- 9.12 工程日志
- new, delete 的用法
- HDU 2425-Hiking Trip(BFS+优先队列)
- protel 99se 中间区域不敷铜
- 关于ArrayList与数组对象的直接输出
- 2034 人见人爱A-B