python - formularios - request.form flask
Enviar datos del formulario HTML a un script de Python en Flask (2)
Tengo el siguiente código en mi script de Python:
def cmd_wui(argv, path_to_tx):
"""Run a web UI."""
from flask import Flask, flash, jsonify, render_template, request
import webbrowser
app = Flask(__name__)
@app.route(''/tx/index/'')
def index():
"""Load start page where you select your project folder
or load history projects from local DB."""
from txclib import get_version
txc_version = get_version()
prj = project.Project(path_to_tx)
# Let''s create a resource list from our config file
res_list = []
prev_proj = ''''
for idx, res in enumerate(prj.get_resource_list()):
hostname = prj.get_resource_host(res)
username, password = prj.getset_host_credentials(hostname)
return render_template(''init.html'', txc_version=txc_version, username=username)
Además, tengo un formulario HTML en init.html:
<form>
<input type="text" id="projectFilepath" size="40" placeholder="Spot your project files">
<input type="button" id="spotButton" value="Spot">
</form>
¿Cómo puedo pasar la entrada del usuario desde "projectFilepath" cuando un usuario hace clic en "spotButton" en una variable en mi script python?
Soy nuevo en Python y Flask, así que perdónenme si cometo algún error.
La etiqueta del form
necesita dos atributos establecidos:
-
action
: la URL a la que se envían los datos del formulario al enviar.url_for
conurl_for
. Se puede omitir si la misma URL maneja mostrando el formulario y procesando los datos. -
method
: si enviar los datos como una cadena de consulta (GET) o datos de formulario (POST).
Agregue una vista para manejar los datos del formulario:
@app.route(''/handle_data'', methods=[''POST''])
def handle_data():
projectpath = request.form[''projectFilepath'']
# your code
# return a response
Establezca la action
del formulario en la URL de esa vista:
<form action="{{ url_for(''handle_data'') }}" method="post">
<input type="text" name="projectFilepath">
<input type="submit">
</form>
Necesita una vista de Frasco que recibirá datos POST y un formulario HTML que lo enviará.
from flask import request
@app.route(''/addRegion'', methods=[''POST''])
def addRegion():
return (request.form[''projectFilePath''])
...
<form action="{{ url_for(''addRegion'') }}" method="post">
Project file path: <input type="text" name="projectFilePath"><br>
<input type="submit" value="Submit">
</form>