2011-11-06 22 views
2

我有一些问题的处理方式,并在升级之后的返朴归真,我不能让小例子的工作:什么导致列表索引超出范围?

class PhotoUploadFormHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.out.write('<html><body>') 
     self.response.out.write('<form action="%s" method="POST" enctype="multipart/form-data">' % blobstore.create_upload_url('/upload_photo')) 
     self.response.out.write('''Upload File: <input type="file" name="file"><br> <input type="submit" 
      name="submit" value="Submit"> </form></body></html>''') 

class PhotoUploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
     try: 
      upload = self.get_uploads()[0] 
      user_photo = UserPhoto(user=users.get_current_user(), 
            blob_key=upload.key()) 
      db.put(user_photo) 
      self.redirect('/view_photo/%s' % upload.key()) 

     except Exception, ex: 
      self.response.out.write(str(ex)) 

app = webapp2.WSGIApplication([  

('/upload_form', PhotoUploadFormHandler), 
             ('/upload_photo', PhotoUploadHandler), 

以上的回报异常在访问上传的文件:

列表索引超出范围

为什么? 感谢您的帮助。

+0

请包括完整的堆栈跟踪,而不是编辑出所有有用的细节。 –

回答

3

似乎* get_uploads *返回一个空列表。因此,[0]失败。

+0

是的,我明白,但不是为什么从python 2.6到python 2.7的简单升级导致它。如果我使用表单来上传文件,那么我得到一个错误,并使用python 2.6代码工作。 –

+1

在帖子中没有足够的信息来诊断问题的根源。这将有助于发布追踪并生成显示* get_uploads *所返回内容的日志消息。 –

+0

感谢@Raymond Hettinger它似乎是我的问题是“太本地化”,我清理新的部署不会导致此错误。所以我要么研究和发布更多关于这个问题的问题,要么认为它是一个太局限的问题,我设法将自己描绘到一个角落,将不能做我想做的事情的部分组合起来。 –