【问题标题】:Wtforms.fields.html5 DateField and TimeField placeholderWtforms.fields.html5 DateField 和 TimeField 占位符
【发布时间】:2020-06-05 17:29:52
【问题描述】:

使用烧瓶应用程序,用于表单:

...
from wtforms.fields.html5 import DateField, TimeField
...
class PostForm(FlaskForm):
    date_posted  = DateField('Date',format='%Y-%m-%d')
    time_posted  = TimeField('Time',format='%H:%M')

如何让它返回当前日期和时间作为占位符?在输入有效日期之前,日期和计时器选择器将不允许提交。默认情况下,我希望刷新页面,以便日期和时间选择器显示当前日期和时间,以便可以提交帖子 - 即使没有更改。

@app.route("/post/new", methods=['GET', 'POST'])
def new_post():
    form = PostForm()
    if form.validate_on_submit():
        post = Post(date_posted=form.date_posted.data,
                    time_posted=form.time_posted.data)
        db.session.add(post)
        db.session.commit()
        return redirect(url_for('home'))
    return render_template('create_post.html', title='New Post', form=form, legend='New Post')

非常感谢您的帮助

【问题讨论】:

    标签: python flask flask-wtforms wtforms


    【解决方案1】:

    您可以使用default 参数来传递表单字段的默认值。在您的情况下,使用 datetime.datetime.now() 获取当前日期和时间:

    from datetime import datetime
    
    
    class PostForm(FlaskForm):
        date_posted = DateField('Date', format='%Y-%m-%d', default=datetime.now())
        time_posted = TimeField('Time', format='%H:%M', default=datetime.now())
    

    或者您可以将默认值格式化为特定格式:

    class PostForm(FlaskForm):
        date_posted  = DateField('Date', format='%Y-%m-%d', default=datetime.now().strftime("%Y-%m-%d"))
        time_posted = TimeField('Time', format='%H:%M', default=datetime.now().strftime("%H:%M"))
    

    【讨论】:

    • 谢谢。我以前尝试过,但不起作用。因为日期和时间值在提交时无效。 datepicker 和 timepicker 本身需要有一个占位符才能提交表单。
    • 你确定吗?我只是在我的电脑上测试它,它按预期工作......
    • 也许您可以尝试格式化默认值,请参阅更新的答案。
    • 抱歉,它确实填满了日期选择器和时间选择器。虽然它用我运行烧瓶应用程序的日期和时间填充它。如何让它不断更新到当前的日期和时间?
    • 只需使用 JavaScirpt 获取当前日期和时间,然后在时间循环中更新它。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 2017-01-20
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多