domingo, 9 de septiembre de 2012

Usando Jade con Django


Desde hace unos días he estado probando Jade, un motor de plantillas inspirado en Haml. Me encanta la sintaxis tan limpia que tiene, muy similar a lo que estoy acostumbrado en python. Estaba trabajando en un proyecto con Django así que me puse a usar Jade de una vez, les muestro como lo integré a Django, lo cuál fue, verdaderamente sencillo.



En el repositorio en github de Jade dice que hay una implementación en Python de Jade llamada pyjade, así que hay que instalarla primero:

Ya que la instalamos, editamos un par de líneas en nuestro settings.py de nuestro proyecto en Django, específicamente la sección TEMPLATE_LOADERS:

A partir de aquí es coser y cantar, hacemos nuestras plantillas con jade, añadimos nuestra url y en su caso la vista correspondiente y ¡voilà¡ Un caso sencillo sería algo así, con una plantilla base y un home:

También podemos escapar el comportamiento por defecto de esta manera:

Solo hay un problema con pyjade en Django, y es que no funcionan los mixins actualmente. Si tienen dudas de la sintaxis de jade, revisen la documentación, en cuanto a pyjade en especifico pueden revisarla también, aunque solo provee información de como usarlo con otros frameworks y unos detalles extras.

Sencillo ¿no?

Saludos!!

5 comentarios:

Anónimo dijo...

Acabo de descubrir pyjade gracias a tu entrada.
La verdad es que facilita muchísimo la escritura del código HTML, y lo mejor es que se integra perfectamente con Django!

Charly Román dijo...

Sí, a mi me gustó mucho, agora solo tengo pendiente dos cosas, uno hacer test de rendimiento con esto y luego probar con Stylus.

Saludos!

Unknown dijo...

Oye tengo una pregunta
omo quedaria esto en pyjade
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>

Charly Román dijo...

Los atributos con condicionales parece que no están del todo implementado, pero puedes ver esto: https://github.com/visionmedia/jade/issues/239

Saludos!

ychevarrias dijo...

Una pregunta yo tambn lo estoy integrando pero cuando uso filtertag propios como {{variable|miFiltro}} me bota error que no existe pero cuando uso el mismo filter en otro template en jinja me va normal