Flask приложение, работающее на Heroku, с 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)
То есть я вижу строку ГОТОВ К ВОЗВРАТУ в журнале, но затем время вне (см. следующую картину). Но если я удаляю блок «попробовать / исключить», он снова работает.
Спасибо