Sending data from HTML form to a Python script in Flask
The form
tag needs some attributes set:
action
: The URL that the form data is sent to on submit. Generate it withurl_for
. It can be omitted if the same URL handles showing the form and processing the data.method="post"
: Submits the data as form data with the POST method. If not given, or explicitly set toget
, the data is submitted in the query string (request.args
) with the GET method instead.enctype="multipart/form-data"
: When the form contains file inputs, it must have this encoding set, otherwise the files will not be uploaded and Flask won't see them.
The input
tag needs a name
parameter.
Add a view to handle the submitted data, which is in request.form
under the same key as the input's name
. Any file inputs will be in request.files
.
@app.route('/handle_data', methods=['POST'])def handle_data(): projectpath = request.form['projectFilepath'] # your code # return a response
Set the form's action
to that view's URL using url_for
:
<form action="{{ url_for('handle_data') }}" method="post"> <input type="text" name="projectFilepath"> <input type="submit"></form>
You need a Flask view that will receive POST data and an HTML form that will send it.
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>