Bird
Raised Fist0
Flaskframework~5 mins

Template inheritance with extends in Flask - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the {% extends %} tag in Flask templates?
The {% extends %} tag allows a template to inherit from a base template, so you can reuse common layout and structure across multiple pages.
Click to reveal answer
beginner
How do you define a block in a Flask template?
You define a block using {% block block_name %} to start and {% endblock %} to end. This marks a section that child templates can override.
Click to reveal answer
intermediate
What happens if a child template does not override a block defined in the parent template?
If the child template does not override a block, the content inside that block from the parent template is used as default.
Click to reveal answer
beginner
Why is template inheritance useful in web development?
It helps keep code DRY (Don't Repeat Yourself) by sharing common layout and design in one place, making maintenance easier and consistent across pages.
Click to reveal answer
intermediate
Show a simple example of a base template with a block and a child template that extends it.
Base template (base.html):
<html>
  <body>
    <header>My Site</header>
    {% block content %}Default content{% endblock %}
  </body>
</html>

Child template (home.html):
{% extends 'base.html' %}
{% block content %}Welcome to the homepage!{% endblock %}
Click to reveal answer
What does the {% extends 'base.html' %} line do in a Flask template?
AIt includes the content of 'base.html' directly without inheritance.
BIt tells the template to use 'base.html' as a parent layout.
CIt imports Python code from 'base.html'.
DIt creates a new template file named 'base.html'.
Which tag is used to define a replaceable section in a Flask template?
A<code>{% block %}</code>
B<code>{% import %}</code>
C<code>{% extends %}</code>
D<code>{% include %}</code>
If a child template does not override a block, what content is shown?
AAn error is raised.
BThe block is empty.
CThe parent template's block content is shown.
DThe child template's content is shown instead.
Why should you use template inheritance in Flask?
ATo avoid repeating common layout code across pages.
BTo write all HTML in one file.
CTo speed up server response time.
DTo include JavaScript files automatically.
Which of these is a correct way to override a block named 'content' in a child template?
A{% include content %}New content{% endinclude %}
B{% extends content %}New content{% endextends %}
C{% import content %}New content{% endimport %}
D{% block content %}New content{% endblock %}
Explain how template inheritance works in Flask using the {% extends %} and {% block %} tags.
Think of a parent layout with placeholders that children fill in.
You got /4 concepts.
    Describe why using template inheritance is beneficial when building web pages with Flask.
    Imagine updating a header on many pages at once.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using {% extends %} in Flask templates?
      easy
      A. To inherit the layout from a base template and reuse it
      B. To include JavaScript files in the template
      C. To define a new CSS style inside the template
      D. To create a new Flask route

      Solution

      1. Step 1: Understand the role of {% extends %}

        This tag is used to inherit from a base template, allowing reuse of common layout parts.
      2. Step 2: Differentiate from other template tags

        Other options like including scripts or defining CSS are done differently, not with {% extends %}.
      3. Final Answer:

        To inherit the layout from a base template and reuse it -> Option A
      4. Quick Check:

        Template inheritance = reuse layout [OK]
      Hint: Remember: extends means reuse base layout [OK]
      Common Mistakes:
      • Confusing extends with including scripts
      • Thinking extends creates new routes
      • Using extends to add CSS styles
      2. Which of the following is the correct syntax to inherit from a base template named base.html?
      easy
      A. {% include 'base.html' %}
      B. {% import 'base.html' %}
      C. {% extends 'base.html' %}
      D. {% block 'base.html' %}

      Solution

      1. Step 1: Recall the syntax for template inheritance

        The correct tag to inherit a template is {% extends 'filename' %}.
      2. Step 2: Identify incorrect tags

        {% include %} inserts content but does not inherit; {% import %} is for macros; {% block %} defines sections, not inheritance.
      3. Final Answer:

        {% extends 'base.html' %} -> Option C
      4. Quick Check:

        Extends = inherit base template [OK]
      Hint: Use extends, not include, to inherit templates [OK]
      Common Mistakes:
      • Using include instead of extends
      • Confusing import with extends
      • Misusing block tag for inheritance
      3. Given the base template base.html with a block named content and a child template that extends it and overrides content, what will be displayed when rendering the child template?
      medium
      A. An error because blocks cannot be overridden
      B. The content defined inside the child's content block
      C. The content defined inside the base template's content block
      D. Both base and child content concatenated automatically

      Solution

      1. Step 1: Understand block overriding in template inheritance

        The child template replaces the base template's block content with its own block content.
      2. Step 2: Clarify behavior of blocks

        Blocks are placeholders in the base template; child templates override them. No automatic concatenation occurs unless explicitly coded.
      3. Final Answer:

        The content defined inside the child's content block -> Option B
      4. Quick Check:

        Child block overrides base block content [OK]
      Hint: Child block content replaces base block content [OK]
      Common Mistakes:
      • Thinking base block content shows instead
      • Expecting automatic concatenation of blocks
      • Believing block override causes errors
      4. Consider this child template code snippet:
      {% extends 'base.html' %}
      {% block content %}
      

      Hello World


      What is the error in this template?
      medium
      A. The closing tag should be {% endblock %} instead of
      B. The extends tag is missing quotes around the filename
      C. The block name should be main not content
      D. The p tag cannot be used inside blocks

      Solution

      1. Step 1: Check block syntax correctness

        Blocks must be closed with {% endblock %}, not with HTML-like closing tags.
      2. Step 2: Verify other parts

        The extends tag is correctly quoted; block name can be any valid name; p tags are allowed inside blocks.
      3. Final Answer:

        The closing tag should be {% endblock %} instead of -> Option A
      4. Quick Check:

        Block ends with endblock tag [OK]
      Hint: Close blocks with {% endblock %}, not HTML tags [OK]
      Common Mistakes:
      • Using HTML closing tags for blocks
      • Forgetting quotes in extends (not here though)
      • Assuming block names are fixed keywords
      5. You have a base template base.html with two blocks: header and content. You want a child template to reuse the base layout but only change the content block, keeping the base header as is. Which is the correct approach?
      hard
      A. In the child template, extend base.html and redefine only the header block
      B. In the child template, extend base.html and redefine both header and content blocks
      C. In the child template, do not use extends; copy all base content and change content
      D. In the child template, extend base.html and define only the content block; omit the header block

      Solution

      1. Step 1: Understand block overriding behavior

        If a block is not redefined in the child, the base template's block content is used automatically.
      2. Step 2: Apply this to the problem

        To keep the base header, do not redefine the header block in the child; only override content.
      3. Final Answer:

        In the child template, extend base.html and define only the content block; omit the header block -> Option D
      4. Quick Check:

        Omit block to keep base content [OK]
      Hint: Override only blocks you want to change [OK]
      Common Mistakes:
      • Redefining all blocks unnecessarily
      • Copying base template instead of extending
      • Overriding wrong block by mistake
      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