为了账号安全,请及时绑定邮箱和手机立即绑定

WTForms Ajax 验证失败

WTForms Ajax 验证失败

白猪掌柜的 2021-09-11 15:31:04
我正在用 Python 构建我的第一个 Web 应用程序,并使应用程序更具动态性。只要用户填写正确的数据,代码就可以正常工作。但是我现在正在测试一些错误的输入,并且有失败的地方。我正在使用 WTForms 并且在构建非 ajax 页面时一切正常,当用户在那里输入错误数据时,应用程序给前端一个很好的“无效输入”。现在应用程序中断。这是表格:class ExpenseForm(FlaskForm):    list_id = HiddenField(validators=[DataRequired()])    title = StringField('Expense', validators=[DataRequired()])    expensetype_id = SelectField('Expense Type', coerce=int)    price = DecimalField('Cost', places=2, validators=[DataRequired()])    quantity = IntegerField('Quantity', validators=[DataRequired()])    currency_id = SelectField('Currency', coerce=int)    country_id = SelectField('Country', coerce=int)    city = StringField('City', validators=[DataRequired()])    date = DateField('Date', validators=[DataRequired()])    exceptional_cost = BooleanField('Exceptional cost')    submit = SubmitField('Add')我的路线:@bp.route('/commit_expense', methods=['POST'])@login_requireddef commit_expense():    form = ExpenseForm()    form.expensetype_id.choices = [(et.id, et.name) for et in Expensetype.query.order_by('name')]    form.currency_id.choices = [(c.id, c.short) for c in Currency.query.order_by('short')]    form.country_id.choices = [(co.id, co.name) for co in Country.query.order_by('name')]    print(form.data)    if form.validate_on_submit():        extra_add_expense(form)        return jsonify({'success': 'Expense added'})    return jsonify({'error':'Failed to add expense',                        'form_errors':[{form[field].label: ', '.join(errors)} for field, errors in form.errors.items()]})现在我已经对我的其他非 ajax 函数进行了测试,当数据不正确时(例如其他 DecimalFields),它们似乎也有一个“无”。在验证时,他们只返回“DataRequired”错误并且页面处理显示。我不太明白这次失败背后的原因。非常感谢任何帮助或见解。
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

form[field].label是一个Label实例,而不是字符串。

使用form[field].label.text,以获取标签的字符串表示。

您视图的最后一行应该是

 return jsonify({'error':'Failed to add expense',
                  'form_errors':[{form[field].label.text: ', '.join(errors)} for field, errors in form.errors.items()]})


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信