📖 Scenario: You are building a simple web page that shows a list of your favorite fruits. Instead of writing HTML with data mixed in, you will use Flask's template engine to separate the data from the page design.
🎯 Goal: Create a Flask app that uses a template engine to display a list of fruits dynamically on a web page.
📋 What You'll Learn
Create a Python list called fruits with the exact values: 'Apple', 'Banana', 'Cherry'
Create a Flask app with a route / that sends the fruits list to a template
Create an HTML template file called fruits.html that uses Jinja2 syntax to loop over fruits and display each fruit in an unordered list
Use the template engine to separate HTML structure from Python data
💡 Why This Matters
🌍 Real World
Web developers use template engines to keep their HTML pages clean and separate from the data or logic that fills them. This makes websites easier to build and maintain.
💼 Career
Knowing how to use Flask and its template engine is a key skill for backend web developers working with Python to create dynamic websites.
Progress0 / 4 steps
1
Create the data list
Create a Python list called fruits with these exact values: 'Apple', 'Banana', and 'Cherry'.
Flask
Hint
Use square brackets to create a list and separate items with commas.
2
Set up Flask app and route
Import Flask and create an app. Then create a route for / that returns rendering of the template fruits.html with the fruits list passed as a variable.
Flask
Hint
Use render_template to send data to the HTML file.
3
Create the HTML template with Jinja2 loop
Create a file named fruits.html with an unordered list. Use Jinja2 syntax to loop over the fruits variable and display each fruit inside a <li> tag.
Flask
Hint
Use {% for fruit in fruits %} to start the loop and {% endfor %} to end it. Use {{ fruit }} to show each fruit.
4
Run the Flask app
Add the code to run the Flask app only if the file is run directly by Python. Use app.run(debug=True) inside the if __name__ == '__main__': block.
Flask
Hint
This code makes sure the app runs only when you start this file directly.
Practice
(1/5)
1. Why do Flask developers use template engines like Jinja2?
easy
A. To separate the website design from the Python code
B. To write all HTML directly inside Python functions
C. To avoid using any HTML in the project
D. To make the website load faster by skipping HTML
Solution
Step 1: Understand the role of template engines
Template engines help keep the design (HTML) separate from the Python logic, making code cleaner.
Step 2: Identify the correct purpose in Flask
Flask uses template engines to insert data into HTML without mixing code and design.
Final Answer:
To separate the website design from the Python code -> Option A
Quick Check:
Separation of concerns = To separate the website design from the Python code [OK]
Hint: Template engines separate code and design for clarity [OK]
Common Mistakes:
Thinking template engines remove HTML entirely
Believing all HTML must be inside Python code
Assuming template engines speed up loading by skipping HTML
2. Which of the following is the correct way to insert a variable name in a Flask template using Jinja2?
easy
A. {{ name }}
B. <% name %>
C. [[ name ]]
D. {% name %}
Solution
Step 1: Recall Jinja2 syntax for variables
Jinja2 uses double curly braces {{ }} to insert variables into templates.
Step 2: Match the syntax to the options
Only {{ name }} uses the correct {{ name }} syntax for variable insertion.
Final Answer:
{{ name }} -> Option A
Quick Check:
Variable insertion = {{ }} [OK]
Hint: Use double curly braces {{ }} for variables in templates [OK]
Common Mistakes:
Using {% %} which is for control flow, not variables
Confusing with other template syntaxes like <% %>
Using brackets or other symbols instead of {{ }}
3. Given this Flask template snippet:
{% if user %}
Hello, {{ user }}!
{% else %}
Hello, Guest!
{% endif %}
What will be displayed if user is set to "Alice"?
medium
A. Hello, Guest!
B. Hello, {{ user }}!
C. Hello, Alice!
D. SyntaxError
Solution
Step 1: Understand the if-else logic in the template
The template checks if user has a value. If yes, it shows "Hello, {{ user }}!" with the variable replaced.
Step 2: Substitute the variable value
Since user is "Alice", the output becomes "Hello, Alice!".
Final Answer:
Hello, Alice! -> Option C
Quick Check:
Variable present = personalized greeting [OK]
Hint: If variable exists, template shows its value inside {{ }} [OK]
Common Mistakes:
Thinking the variable name {{ user }} will print literally
Ignoring the if condition and choosing the else output
Assuming a syntax error due to template tags
4. What is wrong with this Flask template code?
{% for item in items %}
{{ item }
{% endfor %}
medium
A. Incorrect for loop syntax in Jinja2
B. Missing closing curly brace in variable tag
C. The <p> tag cannot be used inside loops
D. No need to use {% endfor %} in templates
Solution
Step 1: Check the variable tag syntax
The variable tag {{ item } is missing one closing curly brace '}' at the end.
Step 2: Verify loop and HTML tags
The for loop syntax and <p> tags are correct; only the variable tag is wrong.
Final Answer:
Missing closing curly brace in variable tag -> Option B
Quick Check:
Variable tags need double braces {{ }} [OK]
Hint: Count your curly braces carefully in {{ }} tags [OK]
Common Mistakes:
Forgetting the second closing brace in {{ }}
Thinking {% endfor %} is optional
Believing HTML tags can't be inside loops
5. You want to display a list of products with their prices in a Flask template. Which approach best uses a template engine to keep your code clean and easy to update?
hard
A. Write all HTML and Python code together in the Flask route function
B. Generate the entire HTML page as a single string in Python and return it
C. Hardcode the product list in the HTML template without variables
D. Use a template with a for loop to list products and insert prices dynamically
Solution
Step 1: Understand separation of concerns
Keeping HTML in templates and logic in Python functions makes code organized and maintainable.
Step 2: Use template loops for dynamic lists
Using a for loop in the template to display products with prices allows easy updates and clean code.
Final Answer:
Use a template with a for loop to list products and insert prices dynamically -> Option D
Quick Check:
Templates + loops = clean dynamic pages [OK]
Hint: Use template loops to display lists dynamically [OK]
Common Mistakes:
Mixing HTML and Python code in one place
Hardcoding data instead of using variables
Building HTML strings manually in Python
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.