Я использую форму с кнопкой отправки, которая обрабатывается с помощью Flask для добавления новой задачи (строки) в базу данных SQLite, называемой задачами.
Вот HTML <div/>
контейнер с соответствующим содержимым блока для части Flask:
<div class="container">
{% block content %}
<form name="task_form" method="post" action="">
{{ form.csrf_token }}
<input type="text" name="task_title" placeholder="Title..."/>
<input type="text" name="task_description" placeholder="Description..."/>
<input type="date" name="task_date_due" placeholder="Due date..."/>
<input type="time" name="task_clock_due" placeholder="Due date (clock)..." step="1"/>
<input type="submit" name="task_submit" value="Add task"/>
</form>
{% endblock %}
</div>
На стороне Python у меня есть следующая функция, которая обрабатывает запросы GET и POST для страница спецификаций c:
@app.route('/db', methods=['GET', 'POST'])
def db():
# Create form
form = TaskForm(request.form)
# Initialize DB connection
init_db_conn()
# Handle POST request
if request.method == 'POST':
# Get form data
title = request.form['task_title']
description = request.form['task_description']
date = request.form['task_date_due']
time = request.form['task_clock_due']
if title != '' and description != '' and date != '' and time != '':
str_dtime = date + ' ' + time
db_conn = get_db_conn()
create_task(db, title, description, str_dtime)
elif request.method == 'GET':
pass
db_conn = get_db_conn()
cur = db_conn.cursor()
cur.execute('SELECT * FROM tasks')
tasks = cur.fetchall()
tmp = render_template('db.html', form=form, tasks=tasks)
return tmp
Я новичок в Flask, мои навыки HTML довольно ржавые, поэтому я могу что-то упустить, но всякий раз, когда я отправляю данные из своей формы через на странице, я не ввел метку полного времени (я использую отдельный ввод даты и времени, чтобы позволить использовать всплывающее окно календаря и поле, отформатированное во времени; это можно сделать лучше, но сейчас это так), я получаю пустую строку .
Пример:
- Если я ввел 08: 00: - PM Я получу пустую строку
- Если я ввел 08: -: - PM Я получу пустую строку.
Что я ожидал, что получит автозаполнение минут / секунд, пока выбран час.
Пример:
- Если я ввел 08: 00: - PM Я получу 08: 00: 00 PM (внутренне в зависимости от формата, который я выбрал на стороне Python, он будет преобразован в 20 : 00: 00 )
- Если я ввел 08: -: - PM Я получу 08: 00: 00 PM (внутренне зависит в формате, который я выбрал на стороне Python, он будет преобразован в 20: 00: 00 )
Есть ли простой способ исправить это поведение или я должны создать пользовательское поле ввода? Возможно, я могу добавить значение по умолчанию или просто текущее время в качестве значения, чтобы предотвратить это, но это просто обходит проблему. Если пользователь удаляет значение по умолчанию для ввода другого и забывает заполнить всю информацию, проблема возникнет снова.