Tentei adaptar o mesmo código em um trabalho meu da faculdade. O sistema pede para inserir dados de uma produção no banco de dados. A visualização das produções é em uma tabela. A tabela contém um botão de adicionar. Ao clicar em adicionar, o modal é aberto. O usuário insere os dados.
O problema é na hora de submeter. Como visto, encaminhei o "action" do formulário para a rota de "novaproducao" pelo método post. Mas ao submeter, o sistema não está encaminhando para a rota solicitada e não está salvando no banco de dados. Além disso, os dados estão todos sendo passados na url mesmo o método sendo post.
Código do Modal:
<div class="modal fade" id="ExemploModalCentralizado" tabindex="-1" role="dialog" aria-labelledby="TituloModalCentralizado" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="TituloModalCentralizado">Cadastro Nova Produção</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<form action="{{ url_for('novaproducao') }}" method="POST">
<div class="modal-body">
<div class="form-group">
<label for="tipodoacai">Tipo de Açaí</label>
<select class="form-control" name="tipodoacai" id="tipodoacai">
<option>Selecionar...</option>
<option value="1">Tradicional</option>
<option value="2">Premium</option>
</select>
</div>
<div class="form-group">
<label for="quantidade">Quantidade</label>
<input type="text" class="form-control" name="quantidade" id="quantidade">
</div>
<div class="form-group">
<label for="datalancamento">Data de Lançamento</label>
<input type="date" class="form-control" name="datalancamento" id="datalancamento">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>
<button type="submit" class="btn btn-primary" id="botao">Salvar</button>
</div>
</form>
</div>
</div>
</div>
Código das classes e criando a tabela:
class Producao(db.Model):
__tablename__ = "producao"
id = db.Column(db.Integer, primary_key=True)
id_tipo = db.Column(db.Integer, db.ForeignKey('acai.id'))
data_lancamento = db.Column(db.Date)
data_validade = db.Column(db.Date)
quantidade = db.Column(db.Integer)
tipo = db.relationship('Acai', foreign_keys=id_tipo)
def __init__(self, id_tipo, data_lancamento, data_validade, quantidade):
self.id_tipo = id_tipo
self.data_lancamento = data_lancamento
self.data_validade = data_validade
self.quantidade = quantidade
def __repr__(self):
return "<Producao %r>" % self.id
Código das rotas:
@app.route("/novaproducao", methods=['POST',])
def novaproducao():
i = Producao(request.form['tipoacai'],
datetime.strptime('1779-01-01 00:00:00', "%Y-%m-%d %H:%M:%S").date(),
datetime.strptime('1776-01-01 00:00:00', "%Y-%m-%d %H:%M:%S").date(),
request.form['quantidade'])
db.session.add(i)
db.session.commit()
return "OK"
Obs: estou usando SQLAlchemy. Coloquei datas predefinidas ao inves de pegar no request.form para fins de testes.