[cpif] CPIF-template 0.3
Ricardo Javier Cardenes Medina
ricardo.cardenes at gmail.com
Tue Jul 3 04:35:29 CEST 2007
Enas...
He dejado la última versión (0.3) de CPIF Templates en el sitio
habitual:
http://www.not.iac.es/~rcardenes/template.py
La documentación sigue siendo válida[1], excepto que he añadido dos
etiquetas de gran importancia:
* extends
* block
Esto es necesario para poder reaprovechar código de una plantilla
a otra :P. Funcionamiento...
EXTENDS:
{% extends "nombrefichero" %}
"nombrefichero" puede ser cualquier nombre de fichero válido,
incluyendo rutas parciales (se aceptan las absolutas... pero
funcionarán como parciales)
Este fichero se buscará dentro de una serie de rutas definidas como
"repositorios de plantillas". Si se encuentra (se usará el primero
que se encuentr), se importará (e interpretará) su código, y se
usará como base para la plantilla actual.
Una plantilla puede extender a otra que a su vez extienda a una
tercera.
Notas: Cualquier cosa que haya antes de la etiqueta "extends" formará
parte del producto final. Sin embargo, tras la etiqueta "extends" sólo
se tendrán en cuenta las etiquetas "block" (y su contenido, claro)
BLOCK:
{% block nombrebloque %}
.....
{% endblock %}
Dentro de esta etiqueta puede ir cualquier cosa que podrías poner en
cualquier otra parte de una plantilla. "nombrebloque" puede ser
lo que sea (que no contenga "blancos", ya que el parser los usa como
separador).
El funcionamiento básico de un bloque es sencillo: renderiza su
contenido de forma incondicional, siempre que aparezca en el árbol
generado por el parser, claro. ¿Qué quiere decir esto último? En caso
de que una etiqueta "block" forme parte de una plantilla base, formará
siempre parte del árbol generado por el parser. Sin embargo, en caso de
que la etiqueta forme parte de una plantilla derivada (es decir, que venga
precedida por una etiqueta "extends"), el motor comprueba si en alguna de
las plantillas de las que deriva aparece algún otro bloque con el mismo
nombre: en caso afirmativo, sustituye el bloque de la plantilla ancestro
por el de la derivada; en caso negativo, se descarta el bloque.
Ejemplo tontorrón:
----- base.txt ------------------------------------------------------
Aquí va {% block palabra %}una palabra{% endblock %}
---------------------------------------------------------------------
----- child.txt -----------------------------------------------------
{% extends "base.txt" %}
{% block palabra %}algo diferente{% endblock %}
---------------------------------------------------------------------
Creo que es obvio, pero:
- renderizar "base.txt" producirá: "Aquí va una palabra";
- renderizar "child.txt" producirá: "Aquí va algo diferente".
Con este añadido que creo que ya se puede usar el motor para los fines
de CPIF.
Y ahora... a la cama :P
[1] Todo el mundo sabe que documentar es lo más jodido... :P, ya
ampliaré la docu
More information about the cpif
mailing list