django上传图片
django修改头像的功能...
1.在表单中加入enctype="multipart/form-data;
关于表单中enctype的介绍:http://www.w3school.com.cn/tags/att_form_enctype.asp
处理表单的视图会在request中接受到上传文件的数据。FILES是个字典,它包含每个FileField的键
(或者ImageField,FileField的子类)。这样的话就可以用request.FILES['File']来存放表单中的这些数据了。
注意request.FILES只有在请求方法为POST,并且发送请求的<form>拥有enctype="multipart/form-data属性时,
才会包含数据。否则request.FILES为空
如下图所示:
提交后显示图片信息:
如果不加enctype="multipart/form-data:得不到图片信息,只有路径
2.上传图片
由于model中photo字段存储的是路径,所以首先要把图片保存在图片对应的文件夹下。
保存图片中使用到了PIL库,对图片进行各种操作----参考资料:廖雪峰--PIL;PIL官方文档
我使用的功能简单,只是保存图片而已。代码:
photo=request.FILES['photo'] if photo:
phototime= request.user.username+str(time.time()).split('.')[0]
photo_last=str(photo).split('.')[-1]
photoname='photos/%s.%s'%(phototime,photo_last)
img=Image.open(photo)
img.save('media/'+photoname)
3.将图片路径更新到数据库
调用update()方法即可。
注:update()方法对于任何结果集(QuerySet)均有效。通过get()方法的到的不是QuerySet,
所以,不可以update,另外get()方法达不到数据和返回条数大于1条的时候都会报错。
print type( UserInfo.objects.get(id=userinfo_id)) ---> <class 'Account.models.UserInfo'> print type( UserInfo.objects.filter(id=userinfo_id))----> <class 'django.db.models.query.QuerySet'>
相关代码如下:
models.py
class UserInfo(models.Model):
user=models.OneToOneField(User)
photo=models.ImageField(upload_to='photos',default='user1.jpg')
def __unicode__(self):
return self.user.username
html代码
<form action="/updateinfo" method="POST" enctype="multipart/form-data"> <div class="updateImg">
<img src="{{ account.photo.url }}" alt=""/> </div> <input name="photo" type="file" id="exampleInputFile">
<button id="photo" class="btn btn-danger" type="submit">上传头像</button>
views.py
def updateInfo(request):
if request.method=='POST':
photo=request.FILES['photo'] if photo:
phototime= request.user.username+str(time.time()).split('.')[0]
photo_last=str(photo).split('.')[-1]
photoname='photos/%s.%s'%(phototime,photo_last)
img=Image.open(photo)
img.save('media/'+photoname) count=UserInfo.objects.filter(user=request.user).update(
photo=photoname
)
if count:
# 设置一个session,然后跳转到对应的页面,此处简易写写
return HttpResponse('上传成功')
else:
return HttpResponse('上传失败') return HttpResponse('图片为空')
参考:http://bluecrystal.iteye.com/blog/233030
http://python.usyiyi.cn/django/index.html
============如有错误欢迎指正,转载请注明出处==============
django上传图片的更多相关文章
- django上传图片和文字记录
直接上代码 html <form class="form-horizontal" id="upload-form"> <div class=& ...
- django上传图片简单验证以及自动修改图片名称
django实现文件(图片)上传之后自动修改名称以及页面上传图片时的各种提醒: 1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在s ...
- django 上传图片、使用PIL制作缩略图并保存到sea的storage
上传图片解析: SAE的设置指引如下: 处理用户上传文件 在setttings.py中添加以下配置. # 修改上传时文件在内存中可以存放的最大size为10m FILE_UPLOAD_MAX_MEMO ...
- django学习记录
1.参考资料问题: 现在django发布了1.11版本,离线文档下载引擎地址 文档下载地址 在线文档:https://docs.djangoproject.com/en/1.10/intro/tuto ...
- Django中MEDIA_ROOT和MEDIA_URL
在django上传图片前端使用动态的配置方法 MEDIA_ROOT 代表着 要上传的路径会和你在models中写的上传的路径进行拼节形成最终文件上传的路径 MEDIA_URL主要就是映射了 在前端使用 ...
- 使用django的ImageField和from制作上传图片页面
需求描述: 做一个简单的注册页面,使得用户在注册页上传头像. 解决办法: 以前用java写这个的时候,在action上面需要用IO接受文件,然后生成一个文件名,再将文件相对路径保存到user表的img ...
- Django中上传图片---避免因图片重名导致被覆盖
上一篇文章中(https://www.cnblogs.com/lutt/p/10640412.html),我们以图片文件夹+图片名字的方式来储存图片,这样的做法会导致有重名的图片会导致之前的图片被覆盖 ...
- django使用ckeditor上传图片
1.在模型类中设置字段为富文本类型,这里需要注意引入的是RichTextUploadingField,以允许上传图片,需要和RichTextField区分开 from ckeditor_uploade ...
- Django上传文件和上传图片(不刷新页面)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- Wireshark基本介绍和学习TCP三次握手
wireshark介绍 wireshark的官方下载网站: http://www.wireshark.org/ wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示 ...
- Node+Socketio实现消息群发功能
注:本博文是作者原创,转载请注明出处. 在项目中时常会使用到socketio,今天我们就来实现Node+socketio实现群发消息功能, 项目源码:https://github.com/zhangx ...
- mysql select
select 查询: 赋值:赋值不能应用在where中,因为where操作的是磁盘上的文件,可以应用在having筛选中. 例:select (market_price-shop_price) as ...
- 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...
- 搭建vpn环境:centos7+openvpn
vpn的含义:virtual private network vpn的作用/使用场景:最常见的一个作用,你通过公网来访问某个局域网里的主机/服务,其实就是搭建一个隧道,用公网传递你的数据包,等数据包到 ...
- 5G为何采纳华为力挺的Polar码?一个通信工程师的大实话
Polar码被采纳为5G eMBB场景的控制信道编码,这两天连续被这条消息刷屏,连吃瓜群众都直呼好爽. 然而,随着媒体报道的持续发酵,真相在口口相传中变了形,不乏夸大不实之嫌,小编终于坐不住了,也想吐 ...
- 【整理】认识MSG结构体
在Windows程序中,消息是由MSG结构体来表示的.MSG结构体的定义如下(参见MSDN): typedef struct tagMSG { HWND hwnd; UINT message; WPA ...
- PC工作原理
提到"技术"这个词时,大多数人都会想到计算机.事实上,我们生活中的方方面面都离不开计算机部件.家里的电器设备有内置的微处理器,例如电视机.甚至汽车里也装有计算机.但是,提到计算机大 ...
- My97DatePicker
http://www.my97.net/index.asp <input id="txtDate" class="Wdate" type="te ...
- ecshop 多表删除
$sql = 'DELETE O, G FROM ' . $GLOBALS['ecs']->table('delivery_order') . ' AS O, ' . $GLOBALS['ecs ...