Поле формы DateTimeLocalField
Класс DateTimeLocalField применяется в формах
Flask-WTF для создания поля ввода даты и времени
без указания часового пояса. Это поле отображается
в браузере как элемент <input type="datetime-local">.
Первым параметром передаётся подпись поля label,
а через именованные параметры задаются валидаторы,
формат ввода и значение по умолчанию.
При отправке формы значение автоматически
преобразуется в объект datetime.datetime.
Если строка не соответствует заданному формату,
поле считается невалидным.
Синтаксис
from wtforms import DateTimeLocalField
field = DateTimeLocalField(label, validators=[...], format='%Y-%m-%dT%H:%M')
Пример
Давайте создадим простую форму с полем даты и времени:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from wtforms import DateTimeLocalField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
created = DateTimeLocalField('Created', validators=[DataRequired()])
submit = SubmitField('Send')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MyForm()
if form.validate_on_submit():
return str(form.created.data)
return render_template('index.html', form=form)
И шаблон для вывода формы:
<form method="post">
{{ form.hidden_tag() }}
<p>{{ form.created.label }} {{ form.created() }}</p>
<p>{{ form.submit() }}</p>
</form>
Если пользователь введёт 2024-05-20T14:30,
в ответ вернётся:
2024-05-20 14:30:00
Пример
Давайте зададим значение по умолчанию и собственный формат отображения:
from datetime import datetime
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import DateTimeLocalField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
class MyForm(FlaskForm):
created = DateTimeLocalField(
'Created',
default=datetime(2024, 5, 20, 14, 30),
format='%Y-%m-%dT%H:%M'
)
submit = SubmitField('Send')
@app.route('/')
def index():
form = MyForm()
return render_template('index.html', form=form)
В браузере поле будет заполнено значением:
2024-05-20T14:30
Смотрите также
-
класс
Form,
который является базой для всех форм -
поле
DateTimeField,
которое принимает дату и время с часовым поясом -
поле
DateField,
которое принимает только дату -
поле
TimeField,
которое принимает только время