Block Definitions and Overriding in Flask Templates
š Scenario: You are building a simple Flask web app that uses template inheritance to keep your HTML organized. You want to create a base template with a header and footer, and then create a child template that changes the main content area.
šÆ Goal: Build two Flask templates: a base template with a content block, and a child template that overrides the content block with custom text.
š What You'll Learn
Create a base template called base.html with a content block
Create a child template called child.html that extends base.html
Override the content block in child.html with a custom message
Use Flask's render_template to render child.html in the app route
š” Why This Matters
š Real World
Web developers use template inheritance to keep HTML code clean and reusable. This helps maintain consistent layouts across pages while customizing content easily.
š¼ Career
Understanding template blocks and overriding is essential for backend web developers working with Flask or similar frameworks to build scalable web applications.
Progress0 / 4 steps
1
Create the base template with a content block
Create a file called base.html with HTML structure including a header and footer. Inside the body, define a Jinja2 block named content using {% block content %}{% endblock %}.
Flask
Hint
Use {% block content %}{% endblock %} inside the body to create a block that child templates can override.
2
Create the child template that extends the base
Create a file called child.html that extends base.html using {% extends 'base.html' %}. Inside it, override the content block with a paragraph that says "This is the child content.".
Flask
Hint
Use {% extends 'base.html' %} at the top and then override the content block with your paragraph.
3
Set up the Flask app route to render the child template
In your Flask app file, import Flask and render_template. Create an app instance. Define a route for / that returns render_template('child.html').
Flask
Hint
Use @app.route('/') to define the route and return render_template('child.html') inside the function.
4
Run the Flask app with debug mode enabled
Add the code to run the Flask app with debug=True when the script is executed directly. Use if __name__ == '__main__': and call app.run(debug=True).
Flask
Hint
Use the standard Python check if __name__ == '__main__': and call app.run(debug=True) inside it.
Practice
(1/5)
1. What is the main purpose of using {% block %} in Flask templates?
easy
A. To include external CSS files
B. To define sections that child templates can override
C. To write Python code inside templates
D. To create comments in the template
Solution
Step 1: Understand block usage in Flask templates
The {% block %} tag defines a section in a base template that child templates can replace or extend.
Step 2: Identify the purpose of blocks
Blocks allow flexible template inheritance by letting child templates override specific parts without rewriting the whole template.
Final Answer:
To define sections that child templates can override -> Option B
Quick Check:
Blocks = override sections [OK]
Hint: Blocks mark replaceable sections in templates [OK]
Common Mistakes:
Confusing blocks with comments
Thinking blocks run Python code
Using blocks to include CSS
2. Which of the following is the correct syntax to override a block named content in a child template?
easy
A. {% block content %}New content{% endblock %}
B. {% extends content %}New content{% endextends %}
C. {% override content %}New content{% endoverride %}
D. {% include content %}New content{% endinclude %}
Solution
Step 1: Recall block override syntax
To override a block, use {% block block_name %}...{% endblock %} in the child template.
Step 2: Check each option
Only {% block content %}New content{% endblock %} uses the correct {% block %} and {% endblock %} tags with the block name.
Final Answer:
{% block content %}New content{% endblock %} -> Option A