[Python] Criar página de edição de dados com id [fechada]

Discussão em 'Python' iniciado por Stack, Setembro 9, 2024.

  1. Stack

    Stack Membro Participativo

    Sou um pouco novo na programação e estou iniciando com Python Flask de forma autônoma, mas estou com um problema para criar uma página que pega o id do cliente e trás os dados para alterar,no caso seria uma página para editar os dados.

    **Esse é meu código:

    @app.route('/clientes', methods=['GET', 'POST'])
    def rota_clientes():
    if 'Usuario_id' not in session:
    return redirect(url_for('Login'))
    dados_clientes = [] # Lista para receber os dados de todos os clientes
    busca_cliente = [] # Lista para receber os termos da pesquisa
    if request.method == 'POST':
    dados_busca = request.form.get('dados_busca')

    busca_cliente = Clientes.Clientes.query.filter(Clientes.Clientes.nome_cliente.like(f'%{dados_busca}%')).all()

    if busca_cliente:
    dados_clientes = busca_cliente

    else:
    clientes = Clientes.Clientes.query.all() # Variável que recebe os dados de todos os clientes
    for cliente in clientes: # Loop que busca os dados no banco e salva na lista acima
    cliente = {
    'id': cliente.id,
    'nome_cliente': cliente.nome_cliente,
    'email_cliente': cliente.email_cliente,
    'Site': cliente.Site,
    'Valor_Mensal': cliente.Valor_Mensal,
    'OBS': cliente.OBS
    }
    dados_clientes.append(cliente)
    return render_template('clientes.html', clientes=dados_clientes, busca_cliente=busca_cliente)


    @app.route('/editar_cliente/<int:clientes_id>', methods=['GET', 'POST'])
    def editar_cliente():
    if 'Usuario_id' in session: # se o usuario id estiver na sesão
    cliente = Clientes.Clientes.query.get(clientes_id)
    if request.method == 'POST':
    # Se o metodo for igual a POST os dados do formlário serão recebidos e enviados para o banco
    cliente.cliente_nome = request.form['cliente_nome']
    cliente.cliente_email = request.form['cliente_email']
    cliente.Site = request.form['Site']
    cliente.Valor_Mensal = request.form['Valor_Mensal']
    cliente.OBS = request.form['OBS']
    Clientes.db.session.commit()
    # após a confirmação retorna para a página inicial
    return redirect(url_for('rota_clientes'))
    else:
    # Se o usuário não estiver na sessão
    return redirect(url_for('Login'))
    return render_template('edit_clientes.html', cliente=cliente, clientes_id=clientes_id)


    Esses são os erros que recebo em cada rota:


    rota_clientes:werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'editar_cliente' with values ['cliente_id']. Did you forget to specify values ['clientes_id']?

    editar_cliente:TypeError: editar_cliente() got an unexpected keyword argument 'clientes_id'
    ​

    Eu queria que esse código me trouxesse os dados de cada coluna da tabela clientes pelo id do cliente e criasse uma url para cada id, para que assim eu pudesse editar os dados.

    Continue reading...

Compartilhe esta Página