gpt4 book ai didi

python - 提交后如何将字段值保留在表单中?

转载 作者:太空狗 更新时间:2023-10-30 00:44:38 25 4
gpt4 key购买 nike

提交表单后,字段值似乎被设置回空。我正在做一些表单验证;如果表单无效,我让它显示错误列表中的错误消息,但我希望保留字段值。有办法做到这一点吗?

这是我验证表单的 View :

@app.route('/booking', methods=['GET', 'POST'])
def booking():
errors = []
if request.method == 'GET':
return render_template('booking.html', errors=errors)
else:
# grab values from form fields and store them in objects
start_date = request.form['start_date']
end_date = request.form['end_date']
name = request.form['name'].strip()
email = request.form['email'].strip()

# check if all fields are non-empty and raise an error if not
if not start_date or not end_date or not name or not email:
errors.append('Please enter all the fields.')
else:
# converts dates to Unix time-stamp for easier validation/calculations
start_timestamp = dt.strptime(start_date, "%d/%m/%Y")
end_timestamp = dt.strptime(end_date, "%d/%m/%Y")

# checks to see if dates are valid
if start_timestamp > end_timestamp or end_timestamp < start_timestamp:
errors.append('Please enter a valid date range')
else:
#checks to see if booking has already been taken
bookings = read_file('app/static/bookings.csv')
for i in bookings:
s_date = dt.strptime(i[0], "%d/%m/%Y")
e_date = dt.strptime(i[1], "%d/%m/%Y")
if s_date <= start_timestamp <= e_date:
errors.append('Booking has already been taken, please select another date')
break

# checks to see if email address is valid using regex
if not valid_email_address(email):
errors.append('Please enter a valid email address')

#if no errors have occured then write booking to file
if not errors:
new_booking = [start_date, end_date, name, email]
bookings.append(new_booking)
write_file(bookings, 'app/static/bookings.csv')
return render_template('booking.html')
return render_template('booking.html', errors=errors)

这是表单的模板:

<div id="main-wrapper">
<div id="main">
<div id="info">
{% if errors %}
{% for error in errors %}
<div><p>{{ error }}</p></div>
{% endfor %}
{% endif %}
<form action = "booking" method="post">
<input id="start_date" type="text" name="start_date">
<input id="end_date" type="text" name="end_date">
<input type="text" name="name" />
<input type="text" name="email" />

<input type="submit" value="Submit">
</div>
</div>
</div>

最佳答案

您最好使用表单库,例如 WTForms (以及相关的扩展名 Flask-WTF )而不是手动完成这一切。

但是如果您习惯于使用这种方法,那么它就非常简单了。您需要将 request.form 中的值提供给 HTML 输入。

<input id="start_data" type="text" name="start_date" value="{{ request.form['start_date'] }}"/>

关于python - 提交后如何将字段值保留在表单中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com