uganda tutorial police jinja africa templates jinja2

templates - tutorial - Jinja mantener sangría en incluir o macro



police vs jinja (2)

Estaba buscando en Jinja2 para lograr lo mismo y llegué a la conclusión de que actualmente no es posible alinear la sangría de bloque multilínea con la declaración de Jinja originadora.

He publicado una pequeña PR en Jinja para agregar una nueva sintaxis {%* ... %} y {{* ... }} que hace exactamente esto. Vea el PR para más detalles:

https://github.com/pallets/jinja/pull/919

Me pregunto si hay alguna manera de mantener la sangría con jinja al agregar una macro o inclusión dentro de un archivo. Me gustaría usar jinja para generar un archivo de código. Un ejemplo sería

Archivo: class.html

class MyClass: def someOp(): pass {% include "someOp.html" %}

Archivo: someOp.html

def someOp2(): pass

El resultado de la plantilla debe ser:

class MyClass: def someOp(): pass def someOp2(): pass

Si hay alguna forma de hacer que jinja complete la sangría antes de la etiqueta de inclusión para cada línea en el archivo incluido? ¿O hay alguna forma de personalizar jinja para hacer esto?


Una forma es envolver la inclusión en una macro, luego, debido a que la macro es una función, su salida se puede pasar a través del filtro de sangría:

class MyClass: def someOp(): pass {% macro someop() %}{% include "someOp.html" %}{% endmacro %} {{ someop()|indent }}

Por defecto, ''sangría'' sangra 4 espacios y no sangra la primera línea, puede usar, por ejemplo, ''sangría (8)'' para sangrar más, consulte http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters para más detalles.

Si lo que estás incluyendo se define como una macro para comenzar, entonces no se necesita la macro envoltura adicional, y puedes saltar directamente al uso del filtro de sangría.