📖 Scenario: You are building a simple web server using Flask. This server will respond to HTTP requests from users visiting your website.
🎯 Goal: Create a basic Flask app that handles HTTP GET requests and returns a simple message. You will set up the app, configure a route, write the function to process the request, and complete the app run command.
📋 What You'll Learn
Create a Flask app instance named app
Define a route for the URL path /hello
Write a function named hello that returns the text 'Hello, Flask!'
Add the code to run the Flask app with app.run()
💡 Why This Matters
🌍 Real World
Web servers use frameworks like Flask to handle HTTP requests from browsers and return web pages or data.
💼 Career
Understanding how Flask processes requests is essential for backend web development jobs that build APIs and web applications.
Progress0 / 4 steps
1
DATA SETUP: Create the Flask app instance
Import Flask from the flask module and create a Flask app instance called app.
Flask
Hint
Use from flask import Flask and then app = Flask(__name__) to create the app.
2
CONFIGURATION: Define a route for the URL path /hello
Use the @app.route('/hello') decorator to define a route for the URL path /hello.
Flask
Hint
Use @app.route('/hello') just before the function that will handle the request.
3
CORE LOGIC: Write the function to handle the request
Write a function named hello that returns the string 'Hello, Flask!'.
Flask
Hint
Define a function named hello that returns the exact string 'Hello, Flask!'.
4
COMPLETION: Add the code to run the Flask app
Add the code if __name__ == '__main__': and inside it call app.run() to start the Flask server.
Flask
Hint
Use the standard Python check if __name__ == '__main__': and call app.run() inside it.
Practice
(1/5)
1. What does Flask use to decide which function should handle an incoming HTTP request?
easy
A. The route URL pattern defined with @app.route
B. The order in which functions are defined in the code
C. The size of the HTTP request body
D. The IP address of the client
Solution
Step 1: Understand Flask routing
Flask uses route decorators like @app.route to map URLs to functions.
Step 2: Match incoming request URL
When a request comes, Flask matches its URL to the route patterns to find the right function.
Final Answer:
The route URL pattern defined with @app.route -> Option A
Quick Check:
Routing = @app.route [OK]
Hint: Routes connect URLs to functions in Flask [OK]
Common Mistakes:
Thinking function order matters
Confusing client IP with routing
Using request size to route
2. Which of the following is the correct way to define a Flask route that only accepts POST requests?
easy
A. @app.route('/submit', methods=['GET'])
B. @app.route('/submit', accept='POST')
C. @app.route('/submit', methods=['POST'])
D. @app.route('/submit', method='POST')
Solution
Step 1: Check correct syntax for methods argument
Flask route decorator uses methods=['POST'] to specify allowed HTTP methods.
Step 2: Identify the correct option
@app.route('/submit', methods=['POST']) uses methods=['POST'], which is the correct syntax.
Final Answer:
@app.route('/submit', methods=['POST']) -> Option C
Quick Check:
methods=['POST'] sets POST only [OK]
Hint: Use methods=['POST'] to allow only POST requests [OK]
Common Mistakes:
Using method instead of methods
Using accept instead of methods
Allowing GET instead of POST
3. Given this Flask code snippet:
from flask import Flask, request
app = Flask(__name__)
@app.route('/greet', methods=['POST'])
def greet():
name = request.form.get('name', 'Guest')
return f'Hello, {name}!'
What will be the response if a POST request is sent to '/greet' with form data name='Alice'?
medium
A. Hello, Guest!
B. Hello, Alice!
C. Hello, None!
D. Error: Missing name parameter
Solution
Step 1: Understand request.form.get usage
The code tries to get 'name' from form data; if missing, defaults to 'Guest'.
Step 2: Analyze the POST request data
The POST request includes name='Alice', so request.form.get('name') returns 'Alice'.
Final Answer:
Hello, Alice! -> Option B
Quick Check:
Form data name='Alice' returns 'Hello, Alice!' [OK]
Hint: request.form.get returns form value or default [OK]
C. Route decorator should not have methods argument
D. Function name cannot be 'data'
Solution
Step 1: Check syntax of if statement
The if statement lacks a colon at the end, causing a syntax error.
Step 2: Verify other parts
request.method is valid, methods argument is correct, function name is allowed.
Final Answer:
Missing colon after if statement -> Option A
Quick Check:
if statement needs colon [OK]
Hint: Check colons after if/else statements [OK]
Common Mistakes:
Forgetting colon after if
Thinking request.method is invalid
Misunderstanding methods argument
5. You want to create a Flask route '/submit' that accepts both GET and POST requests. When accessed by GET, it should show a form. When accessed by POST, it should process form data and return a confirmation message. Which code snippet correctly implements this behavior?
hard
A. from flask import Flask, request
app = Flask(__name__)
@app.route('/submit', methods=['GET', 'POST'])
def submit():
return 'Submit page'
B. from flask import Flask, request
app = Flask(__name__)
@app.route('/submit')
def submit():
if request.method == 'POST':
return 'Data received'
else:
return ''
C. from flask import Flask
app = Flask(__name__)
@app.route('/submit', methods=['POST'])
def submit():
return 'Only POST allowed'
D. from flask import Flask, request
app = Flask(__name__)
@app.route('/submit', methods=['GET', 'POST'])
def submit():
if request.method == 'POST':
data = request.form.get('data')
return f'Data received: {data}'
else:
return ''''''
Solution
Step 1: Check methods argument
from flask import Flask, request
app = Flask(__name__)
@app.route('/submit', methods=['GET', 'POST'])
def submit():
if request.method == 'POST':
data = request.form.get('data')
return f'Data received: {data}'
else:
return '''''' correctly uses methods=['GET', 'POST'] to accept both request types.
Step 2: Verify request method handling
from flask import Flask, request
app = Flask(__name__)
@app.route('/submit', methods=['GET', 'POST'])
def submit():
if request.method == 'POST':
data = request.form.get('data')
return f'Data received: {data}'
else:
return '''''' checks request.method and returns form HTML for GET and processes form data for POST.
Step 3: Compare other options
The other options either miss methods argument, do not handle both methods properly, or do not return form on GET.
Final Answer:
The code snippet that uses methods=['GET', 'POST'], checks request.method, returns form for GET and processes data for POST -> Option D
Quick Check:
methods=['GET','POST'] + if request.method [OK]
Hint: Use methods=['GET','POST'] and check request.method [OK]
Common Mistakes:
Not specifying methods argument
Not checking request.method
Returning same response for all methods
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.