验证失败后,表单提交超时

时间:2020-03-27 12:05:53

标签: validation flask flask-wtforms wtforms

运行在Heroku上的Flask应用程序,带有python女服务员WSGI服务器(与gunicorn相同)。

在一个表单中(WTforms + flask-wtforms),我有一个日期字段。提交表单时,我在后端检查日期是否过去。如果是这样,我会在表单字段中添加一条错误消息(请参见下面的代码)。

当我提交带有过去日期的表单时,该表单会被正确地重新加载并且错误会突出显示。但是如果我将日期更改为正确的日期并再次提交,则请求超时。我进行了几次测试,并通过日志记录跟踪了执行情况,结果似乎在返回之前就卡住了(再次,请参见下面的代码)。

代码(简体)

def edit_template(template_id):
    template = Template.query.get(int(template_id))
    form = TemplateForm(obj=template)

    if request.method == 'POST':
        valid = True
        if form.validate_on_submit():
            form.populate_obj(template)
            try:
                if form.start_date.data < pendulum.now():
                    form.start_date.errors = "The date is in the past"
                    valid = False
            except TypeError:
                # This is to catch when the date is left blank
                pass
            if valid:
                current_app.logger.debug('REALLY VALID')
                db.session.commit()
            else:
                flash('ERROR saving data', 'danger')

    current_app.logger.debug('READY TO RETURN')
    # It stucks here!!!   <-----------------------------------------------
    return render_template('/templates/template_edit.html',
                           form=form)

也就是说,我可以在日志中看到字符串 READY TO RETURN ,但随后超时了(请参见下图)。但是,如果我删除try / except块,它将再次起作用。

enter image description here

谢谢

0 个答案:

没有答案
相关问题