Bird
Raised Fist0
Flaskframework~20 mins

HTML forms with POST method in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
HTML Forms POST Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What happens when this Flask route receives a POST request?
Consider this Flask route handling a form submission with POST method. What will be the output if the form sends 'username' as 'alice'?
Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    username = request.form.get('username')
    return f"Hello, {username}!"
AHello, None!
BHello, alice!
CMethod Not Allowed error
DInternal Server Error
Attempts:
2 left
💡 Hint
Remember that request.form contains data sent by POST method from the form.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines a Flask route to handle POST form data?
Select the option that correctly defines a Flask route to accept POST requests and retrieve a form field named 'email'.
A
@app.route('/email')
def email():
    email = request.form['email']
    return email
B
@app.route('/email', methods=['POST'])
def email():
    email = request.args['email']
    return email
C
@app.route('/email', methods=['GET'])
def email():
    email = request.form['email']
    return email
D
@app.route('/email', methods=['POST'])
def email():
    email = request.form['email']
    return email
Attempts:
2 left
💡 Hint
POST data is accessed via request.form, and the route must allow POST method.
🔧 Debug
advanced
2:00remaining
Why does this Flask form submission always return 'None' for the username?
Given this Flask route and HTML form, why does the server always respond with 'Hello, None!' even when a username is entered?
Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    username = request.args.get('username')
    return f"Hello, {username}!"

# HTML form:
# <form action="/login" method="post">
#   <input type="text" name="username">
#   <input type="submit">
# </form>
ABecause request.args is used instead of request.form to get POST data.
BBecause the form method should be GET, not POST.
CBecause the input field is missing a 'value' attribute.
DBecause the route does not return a valid string.
Attempts:
2 left
💡 Hint
POST form data is in request.form, not request.args.
❓ state_output
advanced
2:00remaining
What is the value of 'count' after submitting the form twice?
This Flask app counts how many times the form is submitted. What will be the value of 'count' after two POST submissions?
Flask
from flask import Flask, request
app = Flask(__name__)

count = 0

@app.route('/submit', methods=['POST'])
def submit():
    global count
    count += 1
    return f"Submission count: {count}"
ASubmission count: 0
BSubmission count: 1
CSubmission count: 2
DUnboundLocalError
Attempts:
2 left
💡 Hint
The global variable 'count' is incremented on each POST request.
🧠 Conceptual
expert
2:00remaining
Which statement about HTML forms with POST method and Flask is TRUE?
Select the true statement about handling HTML forms with POST method in Flask.
ATo handle POST data, the Flask route must specify methods=['POST'] or methods=['GET', 'POST'].
BFlask automatically parses JSON data sent by POST forms into request.form.
CForm data sent by POST is accessible via request.args in Flask.
DFlask's request.form only contains data sent by POST method, never by GET.
Attempts:
2 left
💡 Hint
Check how Flask routes handle HTTP methods and where form data is stored.

Practice

(1/5)
1. What does the POST method in an HTML form do in a Flask application?
easy
A. Automatically encrypts the form data before sending
B. Sends form data appended to the URL as query parameters
C. Prevents the form from submitting data
D. Sends form data inside the request body, not visible in the URL

Solution

  1. Step 1: Understand HTTP methods in forms

    The POST method sends data inside the request body, keeping it hidden from the URL.
  2. Step 2: Compare with GET method

    The GET method appends data to the URL, but POST does not, making it safer for sensitive data.
  3. Final Answer:

    Sends form data inside the request body, not visible in the URL -> Option D
  4. Quick Check:

    POST hides data in request body [OK]
Hint: POST sends data hidden in body, not URL [OK]
Common Mistakes:
  • Confusing POST with GET method
  • Thinking POST encrypts data automatically
  • Believing POST prevents form submission
2. Which of the following is the correct way to specify a form that sends data using POST in HTML?
easy
A. ...
B. ...
C. ...
D. ...

Solution

  1. Step 1: Identify the correct attribute for HTTP method

    The method attribute in the form tag defines how data is sent.
  2. Step 2: Confirm correct value for POST

    Setting method='post' correctly configures the form to send data via POST.
  3. Final Answer:

    <form method='post'>...</form> -> Option A
  4. Quick Check:

    Use method='post' in form tag [OK]
Hint: Use method='post' attribute in form tag [OK]
Common Mistakes:
  • Using 'action' instead of 'method' for HTTP method
  • Writing method='get' when POST is needed
  • Using non-standard attributes like 'send'
3. Given this Flask route and form, what will be printed when the form is submitted?
from flask import Flask, request
app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    name = request.form.get('name')
    return f'Hello, {name}!'

Send
medium
A. Hello, !
B. Hello, Alice!
C. Error: name not found
D. Hello, request.form!

Solution

  1. Step 1: Understand form submission with POST

    The form sends the input named 'name' with value 'Alice' to the '/submit' route via POST.
  2. Step 2: Check how Flask reads form data

    The route uses request.form.get('name') to get the value 'Alice' from the form data.
  3. Final Answer:

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

    request.form.get('name') returns 'Alice' [OK]
Hint: request.form.get('name') reads POST form data [OK]
Common Mistakes:
  • Using request.args instead of request.form for POST data
  • Not specifying methods=['POST'] in route
  • Missing the 'name' attribute in input
4. What is wrong with this Flask route that handles a POST form submission?
from flask import Flask, request
app = Flask(__name__)

@app.route('/login')
def login():
    username = request.form['username']
    return f'Welcome {username}'
medium
A. The route does not allow POST method, so form data won't be received
B. request.form['username'] should be request.args['username']
C. The route should use GET method instead of POST
D. Flask requires form data to be accessed via request.data

Solution

  1. Step 1: Check route methods

    The route only allows GET by default, but form data sent by POST won't be processed.
  2. Step 2: Confirm correct method usage

    To handle POST form data, the route must include methods=['POST'].
  3. Final Answer:

    The route does not allow POST method, so form data won't be received -> Option A
  4. Quick Check:

    Route must allow POST to read POST form data [OK]
Hint: Add methods=['POST'] to route decorator [OK]
Common Mistakes:
  • Forgetting to add methods=['POST'] in route
  • Using request.args for POST data
  • Trying to access form data via request.data
5. You want to create a Flask route that accepts a POST form with fields 'username' and 'password'. It should return 'Login successful' only if username is 'admin' and password is 'secret', otherwise 'Login failed'. Which code snippet correctly implements this?
hard
A. from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['GET']) def login(): user = request.form['username'] pwd = request.form['password'] if user == 'admin' and pwd == 'secret': return 'Login successful' else: return 'Login failed'
B. from flask import Flask, request app = Flask(__name__) @app.route('/login') def login(): user = request.args.get('username') pwd = request.args.get('password') if user == 'admin' and pwd == 'secret': return 'Login successful' else: return 'Login failed'
C. from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): user = request.form.get('username') pwd = request.form.get('password') if user == 'admin' and pwd == 'secret': return 'Login successful' else: return 'Login failed'
D. from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): user = request.form['username'] if user == 'admin': return 'Login successful' else: return 'Login failed'

Solution

  1. Step 1: Ensure route accepts POST method

    The route must specify methods=['POST'] to handle form POST data.
  2. Step 2: Correctly read both 'username' and 'password' from request.form

    Use request.form.get() to safely get both fields and check their values.
  3. Step 3: Implement correct login logic

    Return 'Login successful' only if both username and password match expected values; otherwise return 'Login failed'.
  4. Final Answer:

    The code with methods=['POST'], request.form.get() for both fields, and checks both credentials -> Option C
  5. Quick Check:

    from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['POST']) def login(): user = request.form.get('username') pwd = request.form.get('password') if user == 'admin' and pwd == 'secret': return 'Login successful' else: return 'Login failed' [OK]
Hint: Use methods=['POST'] and request.form.get for form fields [OK]
Common Mistakes:
  • Using GET method instead of POST
  • Reading form data from request.args
  • Checking only username without password
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