HTML ввод времени типа в flask - как автоматически заполнять минуты / секунды, если отсутствует - PullRequest
0 голосов
/ 09 марта 2020

Я использую форму с кнопкой отправки, которая обрабатывается с помощью 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 )

Есть ли простой способ исправить это поведение или я должны создать пользовательское поле ввода? Возможно, я могу добавить значение по умолчанию или просто текущее время в качестве значения, чтобы предотвратить это, но это просто обходит проблему. Если пользователь удаляет значение по умолчанию для ввода другого и забывает заполнить всю информацию, проблема возникнет снова.

1 Ответ

1 голос
/ 09 марта 2020

Не думаю, что вы можете заставить его автоматически заполнять пропущенные значения в HTML, но вы всегда можете установить значение по умолчанию, например, 00:00:00, тогда, если они меняют только часы и секунды и минуты по-прежнему на нуле. Они по-прежнему могут удалять 0, но вы можете обойти это, используя валидатор, который не позволит им ввести неверное время:

<input type="time" name="task_clock_due" placeholder="Due date (clock)..." step="1", value="00:00:00"/>
<span class="validity"></span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...