Tutorial #4: Using HTTP Methods (GET/POST) in Flask and Retrieving Form Data

Posted by


In this Flask tutorial, we will be discussing HTTP methods, specifically GET and POST, and retrieving form data using Flask.

HTTP methods are used to specify the type of action to be performed when making a request to a web server. GET and POST are two of the most commonly used HTTP methods.

GET method is used to retrieve data from a specified resource. It should only be used for retrieving data and not for modifying or deleting data. GET requests can be bookmarked and cached by browsers, making them ideal for retrieving data that does not change frequently.

On the other hand, POST method is used to submit data to be processed by the server. POST requests are not cached by browsers and are used when performing actions that may modify or delete data on the server.

To demonstrate how to use GET and POST methods in Flask, we will create a simple Flask application that displays a form to enter a name and then greets the user with a personalized message.

First, let’s set up our Flask application. Create a new Python file called app.py and add the following code:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        name = request.form['name']
        return f'Hello, {name}!'
    return render_template('index.html')

if __name__ == "__main__":
    app.run(debug=True)

In this code, we have defined a route / that accepts both GET and POST requests. If the request method is POST, we retrieve the data entered in the form with the name name and return a personalized greeting message. If the request method is GET, we render the index.html template.

Next, we need to create the index.html template. Create a new folder called templates in the same directory as app.py and create a new HTML file called index.html with the following content:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask Tutorial #4</title>
</head>
<body>
    <h1>Hello! Please enter your name:</h1>
    <form method="POST">
        <input type="text" name="name" placeholder="Enter your name">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

In this HTML file, we have created a simple form that accepts a user input for their name. When the form is submitted, a POST request is sent to the server with the data entered in the input field.

Now that we have set up our Flask application and created the necessary files, we can run the application by executing the command python app.py in the terminal. Visit http://127.0.0.1:5000/ in your browser to see the form and enter your name. After submitting the form, you should see a personalized greeting message displayed on the page.

Congratulations! You have successfully created a Flask application that demonstrates the use of GET and POST methods to retrieve form data. Experiment with adding more fields to the form or implementing additional functionality to further enhance your understanding of HTTP methods and form data retrieval in Flask.

0 0 votes
Article Rating

Leave a Reply

27 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@scholar-o9k
3 hours ago

the the case of post it isn't working .what do you think canbe the error

@krishnapatel6821
3 hours ago

why can't I use a get request when receiving data from the form?

@dilshodusmanov1458
3 hours ago

best video tutorial

@nargesrahm9409
3 hours ago

<3 fr fr

@fellowviber7792
3 hours ago

what is in base.html file

@JohnLoydMadrinian
3 hours ago

salamat dok sa inyo

salamat sa pagtulong niyo

pag-aalaga ay tapat at totoo

maayos na kalusugan

buong hangad kanino man

sa bawat pilipino'y kayo ang takbuhan

kaya't salamat dok

sa pagtulong na lubos

kalusugan namin naging maayos

salamat dok sa inyo

nakagabay lagi kayo

impormasyong hatid laan sa bawat tao

salamat dok sa inyo

salamat sa pagtulong niyo

pag-aalaga ay tapat at totoo

maayos na kalusugan

buong hangad kanino man

sa bawat pilipino'y kayo ang takbuhan

salamat dok (5x)

@sanicspeed1672
3 hours ago

If youre having trouble with errors check task manager and see if there arw any python files running in background

@Arno_Saks
3 hours ago

how you get this f

@UdayadityaSankarDas
3 hours ago

won't giving # in action cause problems later? What should we put in its place?

@marcin_lewandowski
3 hours ago

Thanks a lot Tim

@Brianccards
3 hours ago

Unbelievably helpful. Watched a few of these videos and I feel like I learned a ridiculous amount in just one day. Went from 0 knowledge of HTML and flask with basic python to feeling like I can make any website lol

@teclote
3 hours ago

Very clear, thank you.

@jordanteoh5412
3 hours ago

Hi, guys i got a question in my code, but hard to explain. if anyone free can help me solve?

@rasinthemarasinghe5229
3 hours ago

If we need to transmit large data through a redirect, how can we do that? I encountered an 'ERR_RESPONSE_HEADERS_TOO_BIG' error when attempting to pass the data.

@originalbinaryhustler3876
3 hours ago

God bless you bro ❤

@longkesh1971
3 hours ago

Exactly what I needed for an example of how to use an HTML form with flask. I really appreciate how you provide a simple example and keep it to around 10 minutes. Thanks man, I'm trying to do my college homework for Python class and this was great.

@jonathanmantello3974
3 hours ago

Love how you give context to the content and what you're doing, great tutorial!

@odinsrensen7460
3 hours ago

this is exactly what I needed.

@adhirajkar7396
3 hours ago

But if we show the input value in the url then it is not safe ig, coz its a post request

@zdravkogospocic9244
3 hours ago

I dont get it why do you have also and base.html and index.html, can you show them and what is difference between this 2, great video, but I am confused with 3 html files insed of 2

27
0
Would love your thoughts, please comment.x
()
x