验证失败后,从null表单数据中检索空字符串

时间:2017-07-21 17:04:58

标签: python python-3.x variables wtforms

这更像是一个python问题,而不是一个wtforms问题,底部的摘要可能对那些经常回答纯python问题的人更有意义。 当页面验证并且一个字段验证失败时,我设法通过使用if / else语句使我的脚本保持先前输入的值。它允许用户在触发验证错误之前查看他们输入的内容:

 if request.method == 'POST':
                if form.validate_on_submit():
                        try:
                                models.insert(form)
                        except:
                                return redirect(url_for('failure'))
                        else:
                                return redirect(url_for('success'))
                else:
                        number_of_discs = form.number_of_discs.data
                        number_of_parts = form.number_of_parts.data
                        disc_number = form.disc_number.data
                        tx_date = form.tx_date.data
                        start_time_1 = form.start_time_1.data
                        end_time_1 = form.end_time_1.data
                        start_time_2 = form.start_time_2.data
                        end_time_2 = (form.data.get('end_time_2', '')) 

但是,如果其中一个字段留空,并且另一个错误填充的字段触发验证错误,则空字段中的值现在显示为“无”。 在某种程度上,这是设计,因为我希望数据库使用NULL值而不是空字符串进行更新。但是,在此过程的这一部分 - 即表单验证中,我希望该字段显示为空。

总而言之,我该如何改变这一行:

number_of_discs = form.number_of_discs.data

这样number_of_discs包含form.number_of_discs.data中的数据,除非它为null,在这种情况下它应该包含一个空字符串。

1 个答案:

答案 0 :(得分:2)

如果data为空:

number_of_discs = form.number_of_discs.data or ''

否则,例如:

number_of_discs = form.number_of_discs.data if form else ''