StopValidation()在路由中没有提升wsgi调试器flask wtf

时间:2016-10-13 06:05:24

标签: python wtforms flask-wtforms

我需要覆盖表单中的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')

1 个答案:

答案 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")])