1
resposta

Duvida com campo de horario

Olá!

Criei um campo do tipo time no html para receber a duração de um filme. O campo pega horas, minutos e segundos. Fiz um request form para esse campo e particionei ele usando split(":") jogando-o em uma lista. Quando os segundos são diferentes de 00, tudo ocorre normal. Porém quando os segundos são iguais a 00, independente do valor dos minutos e das horas, da erro de "list out of range" quando vou acessar a ultima posição do vetor de horario particionado pelo split. Pelo que vi, quando os segundos são iguais a 00, o request form pega somente as horas e minutos dessa forma "01:34" e simplesmente ignora os segundos 00. Não sei como resolver. Desde já agradeço.

1 resposta

Oii Geovanna, como você está?

Fiz alguns testes com o input time e utilizando o split para capturar os valores e ocorreu da forma esperada. Deixo abaixo um exemplo para que você possa ter como base:

Arquivo principal.py

from flask import Flask, render_template, request, redirect, url_for

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('forms.html')


@app.route('/criar', methods=['POST',])
def criar():
    horario = request.form['horario']
    horario = horario.split(":")
    hora = horario[0]
    minuto = horario[1]
    segundo = horario[2]
    print(hora, minuto, segundo)
    return redirect(url_for('index'))

app.run(debug=True)

Arquivo forms.html

<form action="{{ url_for('criar') }}" method="post" enctype="multipart/form-data">
    <fieldset>
      <div>
        <label>Horário</label>
        <input type="time" step="1" id="horario" name="horario" >
      </div>
      <button type="submit">Salvar</button>
    </fieldset>
</form>

No código acima, coloquei apenas um print para confirmamos que os valores estão chegando, independente se os segundos sejam 00 ou não.

Algumas imagens do resultado:

  • No navegador (preenchendo com os segundos sendo 00):

image

  • No terminal (mostrando o valor do print)

image

Qualquer dúvida estou por aqui, a gente vai conversando.

Grande abraço!