Bird
Raised Fist0
Flaskframework~20 mins

How Flask processes HTTP requests - Practice Exercises

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flask Request Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What does this Flask route return?
Consider this Flask app code. What is the output when you visit /hello in a browser?
Flask
from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello():
    return 'Hello, Flask!'

if __name__ == '__main__':
    app.run()
AThe browser shows a blank page
BThe browser shows a 404 Not Found error
CThe browser shows a 500 Internal Server Error
DThe browser shows the text: Hello, Flask!
Attempts:
2 left
💡 Hint
Check the route decorator and the return value of the function.
❓ state_output
intermediate
2:00remaining
What is the value of request.method inside this route?
Given this Flask route, what will request.method be if you send a POST request to /submit?
Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/submit', methods=['GET', 'POST'])
def submit():
    return f'Method used: {request.method}'

if __name__ == '__main__':
    app.run()
APUT
BGET
CPOST
DDELETE
Attempts:
2 left
💡 Hint
Look at the HTTP method used in the request and the allowed methods in the route.
📝 Syntax
advanced
2:30remaining
Which option correctly defines a Flask route that accepts a dynamic integer parameter?
You want a route that matches URLs like /user/42 where 42 is a number. Which code snippet correctly defines this route?
A
@app.route('/user/<id:int>')
def user(id):
    return f'User {id}'
B
@app.route('/user/<int:id>')
def user(id):
    return f'User {id}'
C
@app.route('/user/<int>')
def user(id):
    return f'User {id}'
D
@app.route('/user/<id>')
def user(int):
    return f'User {int}'
Attempts:
2 left
💡 Hint
Flask uses syntax for dynamic parts in routes.
🔧 Debug
advanced
2:30remaining
Why does this Flask app raise a RuntimeError?
This Flask app code raises a RuntimeError: Working outside of application context. Why?
Flask
from flask import Flask, current_app
app = Flask(__name__)

print(current_app.name)

if __name__ == '__main__':
    app.run()
ABecause current_app is accessed outside a request or app context
BBecause Flask app is not created correctly
CBecause print statement is inside the if __name__ == '__main__' block
DBecause app.run() is missing parentheses
Attempts:
2 left
💡 Hint
current_app needs an active application context to work.
🧠 Conceptual
expert
3:00remaining
What is the correct order Flask processes an incoming HTTP request?
Arrange these steps in the order Flask processes an HTTP request internally.
A2,1,3,4
B1,2,3,4
C2,3,1,4
D1,3,2,4
Attempts:
2 left
💡 Hint
Flask needs a context before matching routes and running code.

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

  1. Step 1: Understand Flask routing

    Flask uses route decorators like @app.route to map URLs to functions.
  2. Step 2: Match incoming request URL

    When a request comes, Flask matches its URL to the route patterns to find the right function.
  3. Final Answer:

    The route URL pattern defined with @app.route -> Option A
  4. 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

  1. Step 1: Check correct syntax for methods argument

    Flask route decorator uses methods=['POST'] to specify allowed HTTP methods.
  2. Step 2: Identify the correct option

    @app.route('/submit', methods=['POST']) uses methods=['POST'], which is the correct syntax.
  3. Final Answer:

    @app.route('/submit', methods=['POST']) -> Option C
  4. 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

  1. Step 1: Understand request.form.get usage

    The code tries to get 'name' from form data; if missing, defaults to 'Guest'.
  2. Step 2: Analyze the POST request data

    The POST request includes name='Alice', so request.form.get('name') returns 'Alice'.
  3. Final Answer:

    Hello, Alice! -> Option B
  4. Quick Check:

    Form data name='Alice' returns 'Hello, Alice!' [OK]
Hint: request.form.get returns form value or default [OK]
Common Mistakes:
  • Assuming default 'Guest' always used
  • Confusing GET and POST data
  • Expecting error if parameter missing
4. What is wrong with this Flask route code?
@app.route('/data', methods=['GET', 'POST'])
def data():
    if request.method == 'POST'
        return 'Posted data'
    else:
        return 'Get data'
medium
A. Missing colon after if statement
B. request.method is not valid in Flask
C. Route decorator should not have methods argument
D. Function name cannot be 'data'

Solution

  1. Step 1: Check syntax of if statement

    The if statement lacks a colon at the end, causing a syntax error.
  2. Step 2: Verify other parts

    request.method is valid, methods argument is correct, function name is allowed.
  3. Final Answer:

    Missing colon after if statement -> Option A
  4. 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

  1. 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.
  2. 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.
  3. 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.
  4. Final Answer:

    The code snippet that uses methods=['GET', 'POST'], checks request.method, returns form for GET and processes data for POST -> Option D
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard