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错误后响应仍然存在。
答
您可以验证窗体类本身内部的窗体。
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)
这是一个有点不清楚。你可以尝试解释一下请:) – Nabin
我从请求中获取表单数据的字典,我想填写表单字段在服务器端并验证它,当我填充字段时,我在我的问题中提到的for循环,validate()方法似乎没有注意到变化,并且它在我的表单错误中返回InputRequired错误! –
你为什么想这样做? – Nabin