如何使用 Flask-WTF 表单实现日期选择器

use*_*097 5 python-3.x flask-wtforms

使用 Flask-wtf 时应该如何实现日期选择器?

已尝试使用网络上的各种示例,但似乎没有一个起作用。

请参阅代码以了解最新尝试。

from flask import Flask, render_template, session, redirect, url_for, flash
from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask_wtf import FlaskForm, Form
from wtforms.fields.html5 import DateField
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from wtforms.fields import DateField
from flask_datepicker import datepicker

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'

bootstrap = Bootstrap(app)
moment = Moment(app)

class LoginForm(FlaskForm):
    entrydate = DateField('entrydate')
    submit = SubmitField('Submit')


@app.route('/date', methods=['GET', 'POST'])
def datep():
    form = LoginForm()
    if form.validate():
        return 'Form Successfully Submitted!'
    return render_template('date.html', form=form)
Run Code Online (Sandbox Code Playgroud)

模板文件:

{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Flasky{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Hello, select date!</h1>
</div>
{{ wtf.quick_form(form) }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

预期:看到下拉日期选择器。

实际:不显示日期选择器。

小智 2

在 FlaskForm 中,它将如下所示:

    #Import the resource from wtforms.fields.html5
    from wtforms.fields.html5 import DateField,DateTimeField 
   
    class LoginForm(FlaskForm):
    entrydate = DateField('entrydate', format='%Y-%m-%d' )
    submit = SubmitField('Submit')
Run Code Online (Sandbox Code Playgroud)

您可以尝试将以下内容放入 html 中:

<div class="page-header">
    <h1>Hello, select date!</h1>
 {{form.entrydate (class= "datepicker")}}
</div>
Run Code Online (Sandbox Code Playgroud)

HTML5 的其余部分如下所示:

{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Flasky{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Hello, select date!</h1>
    {{form.entrydate (class= "DateTimeField")}}

</div>
{{ wtf.quick_form(form) }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)