我需要覆盖表单中的Validator并将此特定路由应用于我自己的验证器。
当上传的图片不是jpg时,它将不会通过form.validate_on_submit()
检查,模板将在html中呈现错误。当我尝试使用
raise StopValidation("image1 jpg only")
它引发了调试器,它阻止我看到路由。我只是希望它显示为field.error以及其他错误。
@app.route('/test',methods=['GET','POST'])
def test():
form.image1.validators=[]
if request.method == "POST" and str(request.files['image1'].filename) != "":
if request.files['image1'].filename.split('.',1)[1] != "jpg" :
raise StopValidation("image1 jpg only")
print "image 1 not jpg"
if form.validate_on_submit():
# do stuff
return render_template('test.html')
答案 0 :(得分:0)
如果您只想验证jpg文件,请进行自定义验证,而不是使用StopValidation,只需在表单中进行定义。
def customvalidatorForImage(form, field):
allowed_file = ['jpg','jpeg','png','gif'] # you can modify your valid file list here
if form.image.data:
if form.image.data.split('.',1)[1] not in allowed_file:
raise ValidationError("Please enter a valid image file")
class MyForm(Form):
image = FileField("Image" , [customvalidatorForImage, validators.DataRequired("Image is required")])