注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

哈欠涟涟的博客

学习python、pyqt与django

 
 
 

日志

 
 

多文件上传的一个例子:使用formset实现多张图片上传  

2010-10-23 23:48:50|  分类: django |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
源码引用于http://djangosnippets.org/snippets/1848/
多文件上传的问题,在服务器端就是有多个包括数据的字段,需要保存成文件,这个与一般的form字段没多大区别。关键在于客户端,因为上传的文件个数是不确定的。而这一个功能完全可以使用formset来实现。
下面这个例子中UploadForm包含用于上传文件的form字段,可以只有一个,通过使用formset来建立多个UploadForm来实现多个上传文件的form字段。
@login_required
def produks(request, name):
    entry = get_object_or_404(Entry, name=name)
    UploadFormSet = formset_factory(UploadForm, extra=4) 

    if request.method == "POST":    
        form = ProdukForm(entry, request.POST, request.FILES)       
        formset = UploadFormSet(request.POST, request.FILES)

        if form.is_valid() and formset.is_valid() :
            text     = form.cleaned_data['text']
            html = sanitize_html(markdowner.convert(text))
            title = form.cleaned_data['title']

            produk = Produk(
                    entry   = entry,
                    title = title,
                    kategori = form.cleaned_data['kategori'],
                    keyword  = form.cleaned_data['keyword'],
                    text     = text,
                    html     = html,
                    user     = request.user,
                )          
            produk.save()

            # 多图片的保存
            for form in formset.cleaned_data:
              image= form['image']
     photo = Photo (title = image.name, image= image, produk = produk , entry=entry)
              photo.save()
            # 多图片的保存
            for form in formset.cleaned_data:
              image= form['image']
     photo = Photo (title = image.name, image= image, produk = produk , entry=entry)
              photo.save()
            return HttpResponseRedirect(produk.get_absolute_url())
  else:
    form = ProdukForm(entry)
    formset = UploadFormset()
  return render_to_response('shop/produkadd.html',{
    'form': form,
    'formset': formset,
    'entry': entry,
    }, context_instance=RequestContext(request))
  评论这张
 
阅读(1264)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017