使用WTForms Flask解析日期 - Python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用WTForms Flask解析日期 - Python相关的知识,希望对你有一定的参考价值。

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

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))来查看它的打印内容,您可能会自己想出来。

以上是关于使用WTForms Flask解析日期 - Python的主要内容,如果未能解决你的问题,请参考以下文章

flask-WTForms

flask框架----flask中的wtforms使用

Flask 第七篇Flask中的wtforms使用

85flask之wtforms

Flask-WTForms 在我的项目目录中找不到 WTForms

flask中的wtforms使用