📖 Scenario: You are building a simple Flask web app that shows a form. When the user submits the form with missing or wrong data, you want to show error messages on the page.
🎯 Goal: Create a Flask app that passes error messages from the backend to the HTML template and displays them clearly to the user.
📋 What You'll Learn
Create a dictionary called errors with specific error messages
Create a variable called has_errors to indicate if there are any errors
Use a for loop in the template to display each error message
Add the final Flask route and template rendering code to show errors
💡 Why This Matters
🌍 Real World
Web apps often need to show users helpful error messages when they submit forms with missing or wrong information.
💼 Career
Knowing how to pass error messages from backend to frontend templates is a key skill for web developers working with Flask or similar frameworks.
Progress0 / 4 steps
1
Create the error messages dictionary
Create a dictionary called errors with these exact entries: 'username' key with value 'Username is required.' and 'password' key with value 'Password must be at least 8 characters.'
Flask
Hint
Use curly braces {} to create a dictionary with the exact keys and messages.
2
Add a variable to check if there are any errors
Create a variable called has_errors that is true if the errors dictionary is not empty, otherwise false
Flask
Hint
Use len(errors) > 0 to check if the dictionary has any entries.
3
Use a for loop in the template to display error messages
In the Flask template, use a {% for field, message in errors.items() %} loop to display each error message inside a <li> tag. Close the loop with {% endfor %}.
Flask
Hint
Use Jinja2 syntax to loop over the errors dictionary and show each message inside list items.
4
Complete the Flask route to render the template with errors
Write a Flask route function called show_form that returns render_template('form.html', errors=errors, has_errors=has_errors).
Flask
Hint
Use the @app.route decorator and define the function to pass variables to the template.
Practice
(1/5)
1. In Flask templates, how do you check if an error message exists before displaying it?
easy
A. Use Python if error: directly inside the template.
B. Always display the error message without any condition.
C. Use JavaScript to check for errors inside the template.
D. Use a Jinja2 {% if error %} condition to check if the error variable is set.
Solution
Step 1: Understand template logic in Flask
Flask uses Jinja2 templating, which supports {% if %} statements to conditionally render content.
Step 2: Use Jinja2 syntax to check error existence
Inside the template, you write {% if error %} to check if the error variable has a value before showing it.
Final Answer:
Use a Jinja2 {% if error %} condition to check if the error variable is set. -> Option D
Quick Check:
Jinja2 if condition = B [OK]
Hint: Use Jinja2 {% if %} to show errors only when present [OK]
Common Mistakes:
Trying to use Python if statements directly in templates
Displaying errors without checking if they exist
Using JavaScript inside templates for error display
2. Which of the following is the correct syntax to display an error message stored in a variable named error inside a Flask template?
easy
A. {{ error }}
B. {% error %}
C. {% display error %}
D. [[ error ]]
Solution
Step 1: Recall Jinja2 variable display syntax
In Flask templates, variables are shown using double curly braces like {{ variable }}.
Step 2: Apply to the error variable
To display the error message stored in error, use {{ error }}.
Final Answer:
{{ error }} -> Option A
Quick Check:
Variable display uses {{ }} = A [OK]
Hint: Use {{ variable }} to show values in Flask templates [OK]
Common Mistakes:
Using {% %} which is for logic, not display
Using incorrect brackets like [[ ]]
Trying to use custom tags like {% display %}
3. Given this Flask template snippet:
{% if errors %}
{{ errors[0] }}
{% endif %}
And the variable errors is a list: ["Invalid email"], what will be rendered?
medium
A. No output because errors is a list
B.
errors[0]
C.
Invalid email
D. Syntax error in template
Solution
Step 1: Check the condition {% if errors %}
The list errors contains one item, so it is truthy and the block runs.
Step 2: Render the first error message
The template outputs {{ errors[0] }} which is "Invalid email" inside a div with class "error".
Final Answer:
<div class="error">Invalid email</div> -> Option C
Quick Check:
Truthy list shows first error = C [OK]
Hint: If list has items, {% if list %} is true and shows first element [OK]
Common Mistakes:
Thinking lists can't be checked in if conditions
Expecting literal text 'errors[0]' instead of value
Assuming syntax error due to list indexing
4. You wrote this Flask template code to show errors:
{% if error %}
{{ error }}
{% endif %}
But no error message shows even when you pass error='Invalid input' from Flask. What is the likely problem?
medium
A. Flask templates cannot display error messages.
B. The variable name in the template does not match the one passed from Flask.
C. The {% if %} block is not valid syntax.
D. You must use {{ error.message }} to display the error.
Solution
Step 1: Check variable names consistency
If the Flask code passes error but the template uses a different variable name or none, the condition fails.
Step 2: Confirm template uses the exact variable name
The template must use the same variable name error to display the message correctly.
Final Answer:
Variable name mismatch causes no display. -> Option B
5. You want to display multiple error messages in a Flask template, but only if they exist. Which template code correctly shows all errors from a list errors with accessible markup?
hard
A.
{% if errors %}
{% for e in errors %}
{{ e }}
{% endfor %}
{% endif %}
B.
{% for e in errors %}
{{ e }}
{% endfor %}
C.
{% if errors %}
{{ errors }}
{% endif %}
D.
{{ errors }}
Solution
Step 1: Check for errors existence before display
Using {% if errors %} ensures the list is not empty before rendering.
Step 2: Loop through errors with {% for %} and use accessible markup
Each error is shown in a list item inside a <ul> with aria-live="polite" for screen readers.
Final Answer:
{% if errors %} with {% for %} loop in accessible <ul aria-live="polite"> -> Option A
Quick Check:
Check if errors + loop + aria-live = A [OK]
Hint: Use {% if %} + {% for %} + aria-live for accessible error lists [OK]
Common Mistakes:
Not checking if errors exist before looping
Displaying the whole list as a string
Missing accessibility attributes for screen readers
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.