Todavía no ha salido la versión 1.3 de Django, pero las novedades que traen prometen agradar a los desarrolladores. Llevo tiempo usando la versión de desarrollo 1.3 en entornos de pruebas, trasteando con algunas de sus características, y la verdad es que mi valoración es muy positiva.
Las principales características de la nueva versión son:
Tras el gran número de novedades que incorporó en su momento la versión 1.2, querían que la versión 1.3 se centrara en dotar de más estabilidad al framework, evitando añadir grandes mejoras, y trabajar únicamente en funcionalidades que no requieran una gran modificación en el nucleo. Es cierto que las novedades que traerá la versión 1.3 no son tan abundantes como la fantástica v1.2, pero el trabajo que se está realizando es excelente.
Logging
Django se integra ahora con la herramienta de logging de Python. Es cierto que configurar un buen sistema de logging lleva su tiempo, especialmente para sitios grandes, pero tiene sus ventajas.
Ahora es más sencillo registrar eventos que ayuden a determinar el comportamiento de la web, y los usuarios de la misma, además, se incorpora un nuevo Handler: AdminEmailHandler que es muy útil para enivar un email a los administradores.
De esta forma, se puede configurar un warning en una vista que procesa los datos de un TPV como este:
logging.warning('Solicitud sospechosa de ataque')
registrando en un archivo de registro toda la información de la petición, y a su vez incluyéndola en un email enviado automáticamente a los administradores.
Una gran herramienta capaz de ayudar a mejorar la seguridad y rendimiento de nuestros sitios web.
Generic views basadas en clases
Nunca he sido partidario de utilizar las vistas genéricas de Django. Están diseñadas para cosas sencillas, y generalmente trae quebraderos de cabeza integrarlas con sistemas de permisos, u objetos dependientes.
Tras estudiar las vistas genéricas basadas en clases, mi opinión ha cambiado. Ahora es posible implementar lógicas mucho más complejas sobrescribiendo métodos, permitiéndonos alcanzar un grado de personalización al que no se podía aspirar antes. No solo eso, sino que con un diseño apropiado, puedes crear tus propias clases genéricas, basadas en los mixins incluidos.
Ya hemos utilizado estas vistas en un proyecto de tamaño considerable y la verdad es que estoy satisfecho con el resultado. Tras haber creado unas clases genéricas personalizadas, ahora la mayoría de las vistas pueden ser subclases de éstas, apostando más fuerte todavía por el DRY y KISS.
Pero no todo es positivo en estas vistas genéricas. Me costó bastante entender el funcionamiento dentro del código de Django. No está nada claro y creo que se debería mejorar el árbol de clases actual, y permitir mezclas entre diferentes mixins como MultipleObjectMixin y SingleObjectMixin. De todas formas hay que ser justos, y reconocer que no está nada mal para una primera versión.
Aplicación de archivos estáticos
Esto probablemente no será nada nuevo para muchos desarrolladores de Django, especialmente para aquellos que utilizabamos la aplicación django-staticfiles de jezdez.
Esta aplicación pasa a formar parte del framework dentro de contrib. Los pasos para migrar de django-staticfiles a la aplicación actual se muestran en la propia documentación de django.
El funcionamiento es prácticamente el mismo. Para los que no lo conozcan, es el momento de empezar a utilizarlo. Lo que hace es recopilar todos los archivos estáticos de la web, y ponerlos en un lugar común, bien sea un CDN o un directorio utilizado por nginx para servir los contenidos. Es casi de obligado uso en sitios de gran volumen de tráfico.
Staticfiles es una buena aplicación, aunque recientemente también estoy probando en algunos proyectos django-mediagenerator que es prácticamente igual que staticfiles, solo que es capaz unir, minimizar y comprimir los archivos CSS y JavaScript de la web. Muchos de nuestros proyectos ya tienen una rama en git para probar y evaluar el rendimiento django-mediagenerator.
Con la reciente liberación por parte de Google de mod_pagespeed, es posible conseguir resultados similares a django-mediagenerator con la aplicación de staticfiles, pero esto es otro debate. Hay que tener en cuenta que el módulo de Google es para apache, y cada vez más sitios utilizan nginx como servidor web, además de que cada día surgen más proyectos que recomiendan utilizar nginx, como por ejemplo gunicorn: el unicornio verde.
Conclusión
Las novedades de Django 1.3 van a ser realmente útiles para todos los seguidores de este fantástico framework de desarrollo web.
¡No dejéis de probarlo!



[...] This post was mentioned on Twitter by javier santana, Adrián Ribao. Adrián Ribao said: He escrito un post sobre las novedades que traerá la v 1.3 de #django -> http://j.mp/eoou6N [...]