2017-08-05 65 views
0

我想通過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

回答

0

您可以驗證窗體類本身內部的窗體。

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

0

它要發送通過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)