嗨所以我一直在使用WTForms很长一段时间。
问题在于如何解析日期。
我总是习惯根据表单数据分配变量,如下所示
firstname = form.firstname.data
这会将用户从表单数据中输入的内容存储到名为“firstname”的变量中,该变量工作正常,我的问题在于日期。
我有以下代码
WTForms类
class BookingForm(Form):
start_date = DateField('Start Date', format='%m/%d/%Y')
end_date = DateField('End Date', format='%m/%d/%Y')
预订路线
@app.route('/book/', methods=['GET','POST'])
@login_required
def book():
try:
form = BookingForm(request.form)
if request.method == "POST" and form.validate():
start_date = form.start_date.data
end_date = form.end_date.data
# I Have also tried form.start_date.data.strftime('%m-%d-%Y') with no luck
...
HTML模板{jinja}
<div class="col-md-4">
{{ render_date_field(form.start_date) }}
</div>
<div class="col-md-4">
{{ render_date_field(form.end_date) }}
</div>
我也在python中使用datetime
from datetime import datetime
我一直在尝试关注如何从用户输入表单中将日期解析为变量的许多文档而没有运气,有人知道正确的语法吗?
谢谢
form.date_created.data
返回一个datetime.date
对象。
month
,day
和year
属性将这些值存储为整数。没有必要导入datetime
来解决这个问题。
您可以使用date.strftime('%m-%d-%y')
来获取字符串表示,例如"10-22-18"
。
form = BookingForm(request.form)
if request.method == "POST" and form.validate():
start_date = form.start_date.data
end_date = form.end_date.data
# print(type(start_date)) -> <class 'datetime.date'>
start_month = start_date.month
start_day = start_date.day
start_year = start_date.year
start_date_str = start_date.strftime('%m-%d-%y')
# and so on...
看看DateField的WTForms Documentation。
class wtforms.fields.DateField(default field arguments, format='%Y-%m-%d')
Same as DateTimeField, except stores a datetime.date.
您可以在docs date
中查看有关Python Docs对象的更多信息
提示:如果您尝试过print(type(start_date))
来查看它的打印内容,您可能会自己想出来。