django将网络中的图片,保存成model中的ImageField的实例

yipeiwu_com6年前Python基础

有这样的情形,django个人头像在model中是:

class UserProfile(AbstractUser):
 """
 用户
 """
 name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
 image = models.ImageField(max_length=1000,upload_to='avatar/%Y/%m/', verbose_name=u'头像', null=True, blank=True)

正常情况下,需要客户端(app或者浏览器post上来图片,然后保存到image中)

例如:

image = request.data.get('image', None)
...
user.image=image
user.save()

但是,有这样的情况,如果是第三方,例如微博登录,前端通过微博接口获取到微博头像,post上来的就是头像的地址,/zb_users/upload/202003/q14cwovkyok.jpg

这个时候如何通过图片url,保存到django的model中呢?

思路是,先通过url下载图片,然后保存

from django.core.files import File
from io import BytesIO
from urllib.request import urlopen
 
url = request.data.get('image', None)
r = urlopen(url)
io = BytesIO(r.read())
user.image.save("{}_{}.jpg".format(user.id,int(time.time())), File(io))

以上这篇django将网络中的图片,保存成model中的ImageField的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python中map()函数的使用方法示例

python中map()函数的使用方法示例

前言 在python里有一个函数map(),它有点高大上的感觉。本文将详细给大家介绍python中map()函数使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介...

使用 tf.nn.dynamic_rnn 展开时间维度方式

使用 tf.nn.dynamic_rnn 展开时间维度方式

对于单个的 RNNCell , 使用色的 call 函数进行运算时 ,只是在序列时间上前进了一步 。如使用 x1、 ho 得到此h1, 通过 x2 、 h1 得到 h2 ...

CentOS下Python3的安装及创建虚拟环境的方法

CentOS下Python3的安装及创建虚拟环境的方法

安装python3 一、安装需要编译的关联库 yum instal -y zlib zlib-devel   (根据自己系统的情况,安装需要的关联库,同样用yum安装...

对Python 数组的切片操作详解

高级特性 切片操作:对list,tuple元素进行截取操作,非常简便。 L[0:3],L[:3] 截取前3个元素。 L[1:3] 从1开始截取2个元素出来。 L[-1] 取倒数第一个元素...

Python基于回溯法子集树模板解决0-1背包问题实例

Python基于回溯法子集树模板解决0-1背包问题实例

本文实例讲述了Python基于回溯法子集树模板解决0-1背包问题。分享给大家供大家参考,具体如下: 问题 给定N个物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应...