使用WTForms Flask解析日期 - Python

问题描述 投票:0回答:1

嗨所以我一直在使用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

我一直在尝试关注如何从用户输入表单中将日期解析为变量的许多文档而没有运气,有人知道正确的语法吗?

谢谢

python python-3.x datetime flask flask-wtforms
1个回答
0
投票

form.date_created.data返回一个datetime.date对象。

monthdayyear属性将这些值存储为整数。没有必要导入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))来查看它的打印内容,您可能会自己想出来。

© www.soinside.com 2019 - 2024. All rights reserved.