Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

6.5K
Visualizações
Frasco: función de llamada de Python en el evento OnClick del botón

Soy nuevo en Python y Flask. Tengo una aplicación web Flask con un botón. Cuando hago clic en el botón, me gustaría ejecutar un método de Python, no un método de Javascript. ¿Cómo puedo hacer esto?

He visto ejemplos con python donde me redirige a una nueva página usando una etiqueta de formulario como esta

 <form action="/newPage" method="post">

pero no quiero que me redirija a una nueva página. Solo quiero que ejecute el método python. Estoy haciendo esto para un auto robot Raspberry Pi . Cuando presiono el botón de avance, quiero que ejecute el método para girar las ruedas hacia adelante.

Código HTML del botón ( index.html )

 <button name="forwardBtn" onclick="move_forward()">Forward</button>

Código app.py simple - método move_forward() ubicado aquí

 #### App.py code from flask import Flask, render_template, Response, request, redirect, url_for app = Flask(__name__) @app.route("/") def index(): return render_template('index.html'); def move_forward(): #Moving forward code print("Moving Forward...")

He visto preguntas similares a las mías en Stackoverflow, pero no parecen responder a mi pregunta o no puedo entender la respuesta. Si alguien pudiera proporcionarme una forma sencilla de llamar a un método de Python en un evento de clic de botón, sería muy apreciado.

Otras preguntas que he mirado:

--Funciones de llamada de Python Flask usando botones

-- Llamar a una función de python con un botón

-- Flask Button ejecuta Python sin actualizar la página?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Simplemente puede hacer esto con la ayuda de AJAX... Aquí hay un ejemplo que llama a una función de python que imprime hola sin redirigir o actualizar la página.

En app.py, coloque debajo del segmento de código.

 #rendering the HTML page which has the button @app.route('/json') def json(): return render_template('json.html') #background process happening without any refreshing @app.route('/background_process_test') def background_process_test(): print ("Hello") return ("nothing")

Y su página json.html debería verse como a continuación.

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script type=text/javascript> $(function() { $('a#test').on('click', function(e) { e.preventDefault() $.getJSON('/background_process_test', function(data) { //do nothing }); return false; }); }); </script> //button <div class='container'> <h3>Test</h3> <form> <a href=# id=test><button class='btn btn-default'>Test</button></a> </form> </div>

Aquí, cuando presiona el botón Prueba simple en la consola, puede ver que se muestra "Hola" sin actualizarse.

over 4 years ago · Santiago Trujillo Relatório

0

Parece que desea usar esta aplicación web como un control remoto para su robot, y un problema central es que no querrá que una página se vuelva a cargar cada vez que realice una acción, en cuyo caso, el último enlace que publicó responde a su problema.

Creo que puede estar malinterpretando algunas cosas sobre Flask. Por un lado, no puede anidar múltiples funciones en una sola ruta. No está poniendo a disposición un conjunto de funciones para una ruta en particular, está definiendo la única cosa específica que hará el servidor cuando se llame a esa ruta.

Con eso en mente, podría resolver su problema con una recarga de página cambiando su app.py para que se parezca más a esto:

 from flask import Flask, render_template, Response, request, redirect, url_for app = Flask(__name__) @app.route("/") def index(): return render_template('index.html') @app.route("/forward/", methods=['POST']) def move_forward(): #Moving forward code forward_message = "Moving Forward..." return render_template('index.html', forward_message=forward_message);

Luego, en tu html, usa esto:

 <form action="/forward/" method="post"> <button name="forwardBtn" type="submit">Forward</button> </form>

... Para ejecutar su código de avance. E incluye esto:

 {{ forward_message }}

... donde desea que aparezca el mensaje de avance en su plantilla.

Esto hará que su página se vuelva a cargar, lo cual es inevitable sin usar AJAX y Javascript.

over 4 years ago · Santiago Trujillo Relatório

0

La solución más fácil

 <button type="button" onclick="window.location.href='{{ url_for( 'move_forward') }}';">Forward</button>
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda