本来想一张一张上传的,但是明显会对客户造成不必要的麻烦,所以如果前台一次性上传五张十张的话,那就简单的多。
但是后台我数据库对于图片存储的字段只有一个,不可能有多少张照片就要多少个字段来存储。也就是说,1:我每次只能在后台存一张到数据库,
2:在前台展示的时候我直接可以循环这一个字段来展示我的图片
那么这就涉及到一个列表跟数据循环存储的东西了
用到字典是因为我每张图片还有各自的图片描述,这两个信息时同时提交跟保存的。我把图片保存的url跟他的描述做成列表,然后再循环保存就搞定了。
这里主要用到的就是python的zip()函数
>>> s=[‘a‘,‘b‘]
>>> b=[‘1‘,‘2‘]
>>> zip(s,b)
[(‘a‘, ‘1‘), (‘b‘, ‘2‘)]
看我前台代码:
<form method="POST" action="/savephoto/{{id}}/" enctype="multipart/form-data" name="form">
<p><label>上传图片</label>
<input type="file" name = "file" id="file">
</p>
<p><label>对图片的描述</label>
<textarea name="describe" id="describe" cols="50" rows="5"></textarea>
</p>
<p><label>上传图片</label>
<input type="file" name = "file1" id="file1">
</p>
<p><label>对图片的描述</label>
<textarea name="describe1" id="describe1" cols="50" rows="5"></textarea>
</p>
后台:
if ‘file‘ in request.FILES:
image =request.FILES[‘file‘]
des = request.POST.get(‘describe‘,‘‘)
imglist.append(image)
deslist.append(des)
if ‘file1‘ in request.FILES:
image =request.FILES[‘file1‘]
des = request.POST.get(‘describe1‘,‘‘)
imglist.append(image)
deslist.append(des)
info=zip(imglist,deslist)
for (image,des) in info:
m= UserPhoto(photo=image,user_id=id,describe=des)
m.save()
这样就成功将多图片的信息循环保存到UserPhoto里了!