Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python

Pachal Debbarma
PLUS
Pachal Debbarma
Courses Plus Student 3,597 Points

what is the purpose of {{block.super}} in django template?

Can anybody tell me what is block super in the case of django template language?

2 Answers

Sure. So lets create a block in example.html like so:

{% block content %}
    <p>Some example text.</p>
{% endblock %}

And then we can extend that block in a second template:

{% extends 'example.html' %}

{% block content %}
    <p>The previous example text is replaced by this text.</p>
{% endblock %}

In the example above, only the latter sentence would show up. "Some example text." is being overridden and replaced by "The previous example text is replaced by this text.". You would use {{ block.super }} if you want both things to show up:

{% extends 'example.html' %}

{% block content %}
    {{ block.super }}
    <p>The previous example text is replaced by this text.</p>
{% endblock %}

So with the call to super, you can render whatever was declared in the first template rather than replacing it whatever you put in the template that extends it.

Pachal Debbarma
Pachal Debbarma
Courses Plus Student 3,597 Points

Now I got the concept of {% block.super% }.Thank you so much for taking your time and helping me out.Avery

Oziel Perez
Oziel Perez
61,321 Points

It's basically the same concept for 'super' in any OOP, you call the 'parent' class's constructor to include whatever code is in there, instead of just simply overriding it.

From the Django documention: "If you need to get the content of the block from the parent template, the {{ block.super }} variable will do the trick. This is useful if you want to add to the contents of a parent block instead of completely overriding it. Data inserted using {{ block.super }} will not be automatically escaped..."

Pachal Debbarma
Pachal Debbarma
Courses Plus Student 3,597 Points

thanks for you response Avery.But can you give me a small example?Reading documentation is not cleaning my confusion.