2019独角兽企业重金招聘Python工程师标准>>>

作者:朱涛
链接:https://www.zhihu.com/question/23332111/answer/24239612
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

model中一般会声明为FileField或者ImageField(如果是图片),使用multipart的form进行上传,上传后uploaded_file = request.FILES["file_name"]中会保存相应的文件数据,其中uploaded_file是InMemoryUploadedFile类型(

from django.core.files.uploadedfile import InMemoryUploadedFile),对于uploaded_file可以进行额外的处理(如使用PIL进行resize,保存为thumbnail等),而InMemoryUploadedFile可以直接赋值给FileField/ImageField,model save时相应的路径就可以与model中声明的关联起来。

我之前写的一个将上传的image进行处理生成thumbnail,并且返回InMemoryUploadedFile的函数可以参考:

def get_thumbnail(orig, width=200, height=200):"""get the thumbnail of orig@return: InMemoryUploadedFile which can be assigned to ImageField"""quality = "keep"file_suffix = orig.name.split(".")[-1]filename = orig.nameif file_suffix not in ["jpg", "jpeg"]:filename = "%s.jpg" % orig.name[:-(len(file_suffix)+1)]quality = 95im = Image.open(orig)size = (width, height)thumb = imthumb.thumbnail(size, Image.ANTIALIAS)thumb_io = StringIO.StringIO()thumb.save(thumb_io, format="JPEG", quality=quality)thumb_file = InMemoryUploadedFile(thumb_io, None, filename, 'image/jpeg',thumb_io.len, None)return thumb_file

使用时:

orig_image = request.FILES.get("photo")
thumbnail = get_thumbnail(orig_image)
user.photo = orig_image
user.thumbnail = thumbnail
user.save()

转载于:https://my.oschina.net/u/2603728/blog/784872

Django框架 from django.core.files.uploadedfile import InMemoryUploadedFile相关推荐

  1. Django框架(19.Django中获取url的参数(位置参数以及关键字参数))

    捕获url参数 进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数. 位置参数 位置参数,参数名可以随意指定   ...

  2. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  3. Django框架(23.Django中的模板的标签、变量、过滤器和注释)

    模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...

  4. Django框架(8.Django中的模板文件的使用和模板变量的简单使用)

    为什么使用模板 通过视图可以给用户返回一些字符串等等, 那如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为 ...

  5. Django框架(1.Django框架的简介)

    Django简介 Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计. 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005 ...

  6. Django框架(20.Django的视图函数的request参数以及QueryDict对象)

    HttpReqeust对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以.视图的第一个参数必须是HttpRequ ...

  7. Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)

    ORM框架简介 ORM框架还可以通过方便的配置就可以进行数据库的切换 进入虚拟环境,创建一个新的项目,django-admin  startproject test2  (test2为项目名) 创建好 ...

  8. Django框架(4.django中进入项目的shell之后对数据表进行增删改查的操作)

    django设计模型类.模型类生成表.ORM框架简介:https://blog.csdn.net/wei18791957243/article/details/88657270 数据操作 完成数据表的 ...

  9. Django框架(3.django设计模型类、模型类生成表、ORM框架简介)

    ORM框架简介 O是object,也就类对象的意思, R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思, M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进 ...

最新文章

  1. python面试常见问题-Python面试常见的8个问题及答案总结
  2. 引导类、扩展类、系统类加载器的使用及演示
  3. SQLi LABS Less 27a 联合注入+布尔盲注+时间盲注
  4. 小米关联公司被列入经营异常
  5. 部署Webpart的方法
  6. matlab中S函数的概念及使用
  7. 项目中用到的ws2811炫彩灯控制程序
  8. app 要求字体使用楷体,使用字体包
  9. 接口测试流程及常见问答
  10. 语音芯片ic分类以及sop8的otp语音芯片对比 选型
  11. Python|判断素数
  12. 消费者太穷不愿买手机?苹果的份额创新高,撕下国产手机遮羞布
  13. mapper报Cannot find class: com/kuang/dao/UserMapper
  14. checkra1n越狱错误79_新的unc0ver漏洞可让运行iOS / iPadOS 12至13.5的苹果iPhone和iPad越狱...
  15. 四应变片悬臂梁 计算要点
  16. Nano Today(IF=21)| 北京大学齐宪荣团队通过原位重编程巨噬细胞增强肿瘤免疫治疗效果
  17. 学习笔记-PMSM如何根据反电动势计算永磁体磁链
  18. 修改群名时服务器忙请重试,iOS修改群名称
  19. iOS 怎么在app里提示版本更新
  20. NationalInstruments(一)深圳市裕量科技有限公司

热门文章

  1. C/C++获取当前路径、获取任意pid完整路径(readlink()函数)
  2. Golang通道(chan,协程交互数据)
  3. Ubuntu 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  4. 排序算法:希尔排序算法实现及分析
  5. 栈应用:实现二进制转八进制、十进制、十六进制
  6. Django:django-user2安装相关问题
  7. 20155117王震宇 2006-2007-2 《Java程序设计》第5周学习总结
  8. [Codeforces Round #254 div1] C.DZY Loves Colors 【线段树】
  9. C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法。...
  10. repeater的嵌套(转+总结)[http://www.cnblogs.com/esshs/archive/2005/04/07/132825.html]