使用WTF-Python解析日期

使用WTF-Python解析日期,python,python-3.x,datetime,flask,flask-wtforms,Python,Python 3.x,Datetime,Flask,Flask Wtforms,大家好,我已经成功地使用WTForms一段时间了 问题在于如何解析日期 我总是根据表单数据分配变量,如下所示 firstname = form.firstname.data 这将把用户从表单数据中输入的数据存储到名为“firstname”的变量中,该变量工作得很好,我的问题是当涉及到日期时 我有以下代码 WTForms类 class BookingForm(Form): start_date = DateField('Start Date', format='%m/%d/%Y') end_da

大家好,我已经成功地使用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>
我一直在尝试跟踪许多文档,了解如何将日期从用户输入表单解析为变量,但运气不好,有人知道正确的语法吗


谢谢

表单.date\u已创建。数据
返回一个
datetime.date
对象

属性将这些值存储为整数。不需要导入
datetime
来解决此问题

您可以使用
date.strftime(“%m-%d-%y”)
获取字符串表示形式,例如
“10-22-18”

您可以在文档中查看有关
日期
对象的更多信息


提示:如果您尝试打印(键入(开始日期))查看它打印的内容,您可能会自己找到它。

在浏览器中填写表单时,必须强制执行指定的日期格式。您的日期格式为“%m/%d/%Y”。使用此格式的开始日期示例日期为2018年6月10日。这被
wtf
解析为2018-10-06,并以
格式存储。开始日期。数据
我尝试过使用“打印(类型(开始日期)),但我没有得到任何回报,很明显,烧瓶eror是“必须是字符串或只读缓冲区,而不是无”感谢您的帮助如果
state\u date
None
,则听起来好像您一开始就没有获取表单数据。解析不是你的问题。你可以做两件事:(1)研究使用类似或的方法找出哪里出了问题。(2) 另一个要检查的地方是浏览器的“网络”选项卡中的“开发工具”,以查看POST请求是否使用了预期的请求参数。确定发现我有一个拼写错误,并将其修复。。。感谢您的帮助,另一方面,您建议使用html日期时间选择器在数据库中存储日期,还是只使用顶部带有jquery层的文本字段?
from datetime import datetime
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...
class wtforms.fields.DateField(default field arguments, format='%Y-%m-%d')
        Same as DateTimeField, except stores a datetime.date.