Digamos que tengo los tres archivos de plantilla html que se muestran a continuación. HTML es mínimo solo para ilustrar el punto.La plantilla de varios niveles Django se extiende y los bloques anidados
¿Es posible anidar de algún modo un bloque llamado extra_head_content dentro de un bloque ya llamado extra_head_content. La idea es permitir que la plantilla de tercer nivel proporcione un bloque llamado extra_head_content. La plantilla de arriba toma ese contenido, lo agrega a su bloque llamado extra_head_content y proporciona este bloque combinado a su plantilla principal.
Básicamente, estoy buscando la jerarquización de bloques en archivos de plantilla heredados.
El escenario exacto que estoy tratando de resolver es que cualquier plantilla debería poder agregar archivos javascript o css adicionales al elemento principal. Sin embargo, a la plantilla más baja no debería importar cuántos niveles anidados está anidada. De manera similar, el contenido de cabecera adicional proporcionado por una plantilla intermedia no debe sobreescribirse por el elemento de bloque de la plantilla de terminal.
base.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="/static/css/reset.css" />
{% block extra_head_content %}{% endblock %}
</head>
<body>{% block content %}{% endblock %}
</html>
account.html
{% extends "base.html" %}
{% block extra_head_content %}
<link rel="stylesheet" type="text/css" href="/static/css/account.css" />
{% block extra_head_content %}{% endblock %}
{% endblock %}
{% block content %}
<div id="menu">...</div>
{% block account_content %}{% endblock %}
{% endblock %}
account_profile.html
{% extends "account.html" %}
{% block extra_head_content %}
<link rel="stylesheet" type="text/css" href="/static/css/edit_profile.css" />
{% endblock %}
{% block account_content %}
Welcome to your profile
{% endblock %}
django-sekizai es muy útil ... ¿No puedo encontrar ninguna referencia a que se envíe con Django ahora? AFAICT sigue siendo un módulo de terceros – Anentropic
¡Gracias por elegirlo! Parece estar incluido en Django CMS 2.2 y posterior, pero no en Django en este momento, por lo que he corregido mi respuesta. –