Python, Flask

17 views
Skip to first unread message

Mateus Madeira

unread,
May 7, 2023, 9:56:26 AM5/7/23
to Python Brasil
Oi. Estou iniciando no Python com Flask. Estou fazendo formulário que cadastra entradas de grãos. As tabelas MySql e formulários de produtores, motoristas e grãos estão prontos. Mas no formulário de entradas não estou conseguindo selecionar os dados, como produtor, para inserir na tabela de entradas. 
Trecho do código python de cadastro de entradas:

elif form_type == 'entradas':
data = datetime.strptime(request.form['data'], '%Y-%m-%d')
quantidade = request.form['quantidade']
produtor_id = request.form['produtor_id']
motorista_id = request.form['motorista_id']
cultura_id = request.form['cultura_id']

cursor = minha_conexao.cursor()
cursor.execute('SELECT * FROM motoristas WHERE id=%s', (motorista_id,))
motorista = cursor.fetchone()
cursor.close()


cur = minha_conexao.cursor()
cur.execute(
"INSERT INTO entradas (data, quantidade, produtor_id, motorista_id, cultura_id) VALUES (%s, %s, %s, %s, %s)",
(data, quantidade, produtor_id, motorista_id, cultura_id))
minha_conexao.commit()
cur.close()

return render_template('homepage.html', form_type=form_type, message='Entrada cadastrada com sucesso!')

Trecho do HTML:
<h1>Entradas</h1>
<form method="POST">
<input type="hidden" name="form_type" value="entradas">

<label for="data">Data:</label>
<input type="date" id="data" name="data" required><br>

<label for="quantidade">Quantidade de sacas:</label>
<input type="text" id="quantidade" name="quantidade" required><br>

<label for="produtor_id">Produtor:</label>
<select id="produtor_id" name="produtor_id">
{% for produtor in produtores %}
<option value="{{ produtor.id }}">{{ produtor.nome }}</option>
{% endfor %}
</select>

<label for="motorista_id">Motorista:</label>
<select class="form-control" id="motorista_id" name="motorista_id">
{% for motorista in motoristas %}
<option value="{{ motorista.id }}">{{ motorista.nome_motorista }}</option>
{% endfor %}
</select>

<label for="cultura">Cultura:</label>
<select class="form-control" id="cultura" name="cultura" required>
{% for cultura in culturas %}
<option value="{{ cultura.id_cult }}">{{ cultura.nome }} - {{ cultura.especie }}</option>
{% endfor %}
</select>

<input type="submit" value="Adicionar">
</form>

Marcelo Valle

unread,
May 7, 2023, 10:37:37 AM5/7/23
to Python Brasil
Parece correto o select com produtor_id

Qual o problema? 

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/2e8b0491-893c-4b07-86b4-e043d67582a7n%40googlegroups.com.

Mateus Madeira

unread,
May 7, 2023, 12:13:39 PM5/7/23
to Python Brasil
Nesse exemplo, deveria ser possível selecionar o motorista que está no bd. Mas não aparece opções.cadastro_entr (2).pngbd (2).png

Marcelo Valle

unread,
May 7, 2023, 3:38:01 PM5/7/23
to python...@googlegroups.com
Ok, no template, perceba que você faz um loop FOR em todos os elementos da variável `motoristas`.
Para que você possa usar a variavel no template, você precisa que um método no controller faça uma consulta no banco de dados, obtenha todos os motoristas, e então mande isso para o template (tipo, render_template('homepage.html', motoristas=sua_lista_populada_a_partir_do_db)). Eu não vi isso no seu código, em momento algum você consultou todos os motoristas do banco e em momento algum você passou isso do controller para o template.

Esse tutorial ensina isso, mas estah em ingles: https://pythonbasics.org/flask-tutorial-templates/

Qual tutorial você está usando? Posso tentar te mostrar a parte da documentação que você precisa ler.

[]s

Reply all
Reply to author
Forward
0 new messages