用户将未知数量的文件上传到我的GAE应用程序(照片及其说明)。表单包含
<input type=hidden name="{{ item.photo_imgsrc_1280 }}" id="file{{ forloop.counter }}">
<input type=hidden name="desc{{ forloop.counter }}" value="{{ item.description }}">
(名称值实际为replaced by Picasa,包含文件内容)
现在在上传处理程序中,我需要找到每个文件的描述。 目前我这样做:
files_counter = 0
for argument in arguments:
if 'localhost' in argument: # choose files only, not other fields - Picasa related approach
files_counter +=1
# self.request.get(argument) here returns the file
# self.request.get('desc'+str(files_counter))) can return some other description, not
# related to the file above
我该如何解决?
答案 0 :(得分:2)
每个隐藏字段不需要不同的名称。您可以多次使用相同的名称,并获取所有名称。所以让我们稍微改变你的领域:
<input type=hidden name="{{ item.photo_imgsrc_1280 }}" id="file{{ forloop.counter }}">
<input type=hidden name="photo" value="{{ item.photo_imgsrc_1280 }}">
<input type=hidden name="description" value="{{ item.description }}">
然后,获取photo
和description
字段的所有值:
photo_names = self.request.POST.getall('photo')
descriptions = self.request.POST.getall('description')
此处,photo_names
是包含照片的字段名称列表。要获得实际的图像字段,您需要执行以下操作:
photos = [self.request.POST.get(name) for name in photo_names]
现在,您可以将它们分组到元组列表(photo, description)
中,并逐个迭代:
data = zip(photos, descriptions)
for photo, description in data:
# do what you need with each single photo/desc...