关于django批量上传图片

本来想一张一张上传的,但是明显会对客户造成不必要的麻烦,所以如果前台一次性上传五张十张的话,那就简单的多。
 
但是后台我数据库对于图片存储的字段只有一个,不可能有多少张照片就要多少个字段来存储。也就是说,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里了!

posted @ 2014-08-09 18:22  阿乐子  阅读(3208)  评论(0编辑  收藏  举报