本來想一張一張上傳的,但是明顯會對客戶造成不必要的麻煩,所以如果前台一次性上傳五張十張的話,那就簡單的多。
但是后台我數據庫對於圖片存儲的字段只有一個,不可能有多少張照片就要多少個字段來存儲。也就是說,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里了!