Base.html extends into create.html
base.html
{% block title %}Index{% endblock %}
{% block body %}
<h1>Index</h1>
<p class="important">
Welcome to my awesome homepage.
</p>
{% endblock %}
create.html
{% extends "base.html" %}
{% block title %}Index1{% endblock %}
{% block content %}
<p class="important">
first message.
</p>
{% endblock %}
{% block title %}Index2{% endblock %}
{% block content %}
<p class="important">
second message.
</p>
{% endblock %}
...
{% block title %}Indexn{% endblock %}
{% block content %}
<p class="important">
nth message.
</p>
{% endblock %}
how to extend base.html and repeat template on a single file repeatedly as above? any suggestion.
You can use macro tag and your template will look like this
{% macro create_block(title, message) %}
<h1>{{title}}</h1>
<p class="important">
{{message}}
</p>
{% endmacro %}
{% for title, message in list %}
{{ create_block(title, message) }}
{% endfor %}
I test it and it's my script:
from jinja2 import Template
titles = ['1 title', '2 title']
messages = ['1 message', '2 message']
template = Template("""
{% macro create_block(title, message) %}
<h1>{{title}}</h1>
<p class="important">
{{message}}
</p>
{% endmacro %}
{% for title, message in list %}
{{ create_block(title, message) }}
{% endfor %}
""")
print template.render(list=zip(titles, messages))
And it's my output
<h1>1 title</h1>
<p class="important">
1 message
</p>
<h1>2 title</h1>
<p class="important">
2 message
</p>
I hope it solved you problem
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With