Send data from a textbox into Flask?

PythonFlask

Python Problem Overview


I was wondering if there was a way to take something from a text box in the HTML, feed it into flask, then parse that data with Python. I was thinking this might involve some JS but I could be wrong. Any ideas?

Python Solutions


Solution 1 - Python

Unless you want to do something more complicated, feeding data from a HTML form into Flask is pretty easy.

  • Create a view that accepts a POST request (my_form_post).
  • Access the form elements in the dictionary request.form.

templates/my-form.html:

<form method="POST">
    <input name="text">
    <input type="submit">
</form>

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
def my_form():
    return render_template('my-form.html')

@app.route('/', methods=['POST'])
def my_form_post():
    text = request.form['text']
    processed_text = text.upper()
    return processed_text

This is the Flask documentation about accessing request data.

If you need more complicated forms that need validation then you can take a look at WTForms and how to integrate them with Flask.

Note: unless you have any other restrictions, you don't really need JavaScript at all to send your data (although you can use it).

Solution 2 - Python

Declare a Flask endpoint to accept POST input type and then do necessary steps. Use jQuery to post the data.

from flask import request

@app.route('/parse_data', methods=['GET', 'POST'])
def parse_data(data):
    if request.method == "POST":
         #perform action here

var value = $('.textbox').val();
$.ajax({
  type: 'POST',
  url: "{{ url_for('parse_data') }}",
  data: JSON.stringify(value),
  contentType: 'application/json',
  success: function(data){
    // do something with the received data
  }
});

Solution 3 - Python

All interaction between server(your flask app) and client(browser) going by request and response. When user hit button submit in your form his browser send request with this form to your server (flask app), and you can get content of the form like:

request.args.get('form_name')

Solution 4 - Python

Assuming you already know how to write a view in Flask that responds to a url, create one that reads the request.post data. To add the input box to this post data create a form on your page with the text box. You can then use jquery to do

var data = $('#<form-id>').serialize()

and then post to your view asynchronously using something like the below.

$.post('<your view url>', function(data) {
  $('.result').html(data);
});
 

Solution 5 - Python

This worked for me.

def parse_data():
    if request.method == "POST":
    	data = request.get_json()
    	print(data['answers'])
    	return render_template('output.html', data=data)
$.ajax({
	  type: 'POST',
	  url: "/parse_data",
	  data: JSON.stringify({values}),
	  contentType: "application/json;charset=utf-8",
	  dataType: "json",
	  success: function(data){
	    // do something with the received data
	  }
	});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionollienView Question on Stackoverflow
Solution 1 - PythonpachaView Answer on Stackoverflow
Solution 2 - PythonKracekumarView Answer on Stackoverflow
Solution 3 - PythonDenisView Answer on Stackoverflow
Solution 4 - PythonPratik MandrekarView Answer on Stackoverflow
Solution 5 - PythonAnurag SharmaView Answer on Stackoverflow