Pregunta

En Jinja2 , tengo una plantilla base como esto:

<title>{% block title %}{% endblock %} - example.com</title>
[...]

<h1> 
  {% block title %}{% endblock %} - example.com
</h1>

Jinja2, a continuación, falla con el mensaje siguiente:

  lines = [self.message, '  ' + location]
: block 'title' defined twice

Debe ser evidente ahora en cuanto a lo que estoy tratando de hacer - tener el mismo título en dos lugares:. La etiqueta del título y la etiqueta H1, pero la parte del título que realmente pueda proveer otras plantillas derivadas

¿Cómo se puede lograr esto normalmente?

Otros consejos

La idea es crear un bloque dentro de una macro y luego llamar macro dos veces, en lugar de tener etiqueta "bloque" repitió dos veces.

En última versión Jinja2 esto funciona:

layout.html

{%- extends "base.html" -%}

{%- macro duplicated() -%}
    {% block overrideninchild %}{% endblock %}
{%- endmacro -%}

{% block base_content %}
    {{ duplicated() }}
    {{ duplicated() }}
{% endblock %}

child_page.html

{%- extends "layout.html" -%}

{% block overrideninchild %}
   Should be visible twice.
{% endblock %}
scroll top