wtfroms验证似乎并没有改变在服务器端

问题描述:

我想通过Ajax和wtforms验证表单字段数据后,开始工作,我有一个表格,像这样一个领域:wtfroms验证似乎并没有改变在服务器端

name = StringField('Name :', description = "enter your name", validators=[InputRequired(message='please enter your name')]) 

我的服务器端代码是这样的:

@app.route('/validation', methods=['get', 'post']) 
def validation(): 
    data = request.get_json(force = True) 
    myform = MyForm() 
    for field in myform: 
     field.data = data[field.name] 
    myform.validate() 
    return jsonify(myform.errors) 

我通过JSON发送现场数据,然后我将其设置为领域,我检查了它和它的myform.data数据存在,但验证InputRequired错误后响应仍然存在。

+0

这是一个有点不清楚。你可以尝试解释一下请:) – Nabin

+0

我从请求中获取表单数据的字典,我想填写表单字段在服务器端并验证它,当我填充字段时,我在我的问题中提到的for循环,validate()方法似乎没有注意到变化,并且它在我的表单错误中返回InputRequired错误! –

+0

你为什么想这样做? – Nabin

您可以验证窗体类本身内部的窗体。

class YouForm(FlaskForm): 
    name = StringField('Name :', description = "enter your name", validators=[InputRequired(message='please enter your name')]) 

    def validate(self): 
     valid = True 
     if not self.name.data: 
      self.name.errors.append('* Either file or text is required') 
      valid = False 
     return valid 

这样,你可以简单地调用验证从取景功能方法views.py文件进行验证。

+0

如果我在表单中使用其他验证器,该怎么办?你的答案只适用于InputRequired验证器,应该有更好的方法。 –

+0

你的意思是,你的表单中还有其他字段? “其他验证人”究竟是什么意思?你能举个例子吗? – Nabin

它要发送通过Ajax的数据,并希望服务器端验证只是简单的使用request.form

@app.route('/validation', methods=['get', 'post']) 
def validation(): 
    data = request.get_json(force = True) 
    myform = MyForm(request.form) 
    if myform.validate(): 
     #do something 
     #return somthing 
    else: 
     return jsonify(myform.errors)