如何使用GAE获取特定的POST参数?

时间:2011-08-07 17:28:06

标签: google-app-engine request

用户将未知数量的文件上传到我的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

我该如何解决?

1 个答案:

答案 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 }}">

然后,获取photodescription字段的所有值:

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...