这个问题已经在这里有一个答案:
我有一个包含多个文本字段和一个文件中的字段的一种形式:
class PictureForm(Form):
title = StringField(u'Title',validators=[Required()])
description = TextAreaField(u'Description')
gallery = QuerySelectField(u'Which
gallery?',query_factory=all_galleries,validators=[Required()])
imagekind = StringField(u'Imagekind URL')
pic = FileField('Image upload')
submit = SubmitField(u'Upload/edit picture')
我想有是编辑,可能会或可能不会接受新的图像照片的图。如果在request.files文件我想使用它,并更换旧的图像。但是,如果没有一个文件,我想以刚刚更新,同时保留旧的镜像文件的元数据(名称,画廊,imagekind链接等)。
视图看起来是这样的:
@main.route('/picture/edit/<id>', methods = ['GET', 'POST'])
@login_required
def edit_picture(id):
# old picture
picture = Picture.query.get_or_404(id)
# form data - old picture
form = PictureForm(obj=picture)
if form.validate_on_submit():
# update picture data
picture.title = form.title.data
picture.description = form.description.data
picture.gallery = form.gallery.data
picture.imagekind = form.imagekind.data
# new image if uploaded
image = request.files['pic']
filename = ''
if image:
# replace old file on disk with new image...
# some PIL processing
# new file names
else:
msg = u'No new image, just updated the metadata'
flash(msg,'warning')
db.session.add(picture)
db.session.commit()
return redirect(url_for('main.admin_page'))
return render_template('main/new_picture.html', form = form, edit=True,
picture = picture)
当形式给出一个文件/图片,一切正常,因为它应该。然而,当我尝试没有形式的图像或文件,我得到一个400错误的请求?有任何想法吗?所有字段具有正确编号和名称...
愚蠢的错误:我不得不请与:
if 'pic' in request.files:
然后从那里。