13 extensiones indispensables en proyectos Django
Cuando comenzamos el desarrollo de aplicaciones o servicios todos hemos tenido más de un problema con el código, tanto mientras lo estamos escribiendo como cuando tenemos el proyecto en producción. Esto equivale a tiempo que tenemos que emplear para buscar las líneas que lanzan el fallo, corregirlas, reeditar, etc...
También podemos tener el caso de que pasamos la mayor parte del tiempo escribiendo módulos que usaremos como plantillas, con lo que tendremos una plantilla sí, pero habrá que depurarla para adecuarla a todos los contextos donde queramos implementarla y eso nos llevará más tiempo aún.
Para intentar ayudar en estos menesteres cotidianos del programador, os traemos una lista de herramientas que facilitan y mejoran aún más si cabe el entorno de desarrollo con Django. Todas ellas se implementan excelentemente en la paquetería base de Django, por lo que sólo nos daremos que están ahí cuando las queramos usar.
Empezamos!
iPython
Se trata de un Shell interactivo que suma funcionalidades al que ya de por sí integra Python. Cuenta con soporte para código, texto, expresiones matemáticas, etc... También cuenta con un módulo que podremos precargar en nuestros propios proyectos.
Django debug toolbar
Gracias a esta herramienta podemos obtener información de lo que Django está haciendo en cada momento además de ofrecernos información sobre los tiempos de ejecución que tanto preocupan a los administradores de hostings.
Django-reversion
Si queremos implementar un histórico de cambios sobre los modelos de nuestros proyectos, estamos ante la herramienta adecuada. Bastará con indicarle los modelos sobre los que queremos que registre los cambios, para que se ponga manos a la obra almacenándolos en formato JSON dentro de una tabla llamada django-reversion y podamos contar con este histórico para tener mayor control sobre nuestro proyecto.
Django-grappelli
Una potente interfaz de administración para poder gestionar los datos de nuestros proyectos web desde un único panel. Cuenta con plugins jQuery, temas personalizables además de otras características sorprendentes. Podremos editar y actualizar la información de nuestros proyectos desde una única interfaz amigable y resolutiva, que de vez en cuando nos recordará a un CMS convencional.
Django-extras
El objetivo de este paquete es el de ofrecer extensiones para Django que resuelvan situaciones comunes de desarrollo que aún no están cubiertas por defecto por esta plataforma (Django). Entre estas extensiones encontramos apoyo en conflictos con modelos mixins para ayudar con la asignación de propietarios a modelos, decoradores adicionales, campos modelo y formas adicionales, etc...
Crispy-forms
Esta herramienta nos proporciona un filtro |crispy y una etiqueta {% crispy %} que nos permitirá tomar el control sobre el comportamiento de las representaciones de formas de Django muy fácilmente. Además se integra muy bien en la paquetería de Django, por lo que no nos 'estorbará' en ningún momento durante el desarrollo del código.
Floppy-forms
De forma similar a crispy-forms nos ayudará en la producción de formas y su representación. La diferencia con respecto a cómo ejecuta el código, es que los campos y widgets de la aplicación se renderizan mediante plantillas en lugar de usar cadenas en interpolación, con lo que mejoramos enormemente la producción y el uso de las plantillas que Django nos proporciona. Nos permitirá personalizar y extender el comportamiento de los widgets, puesto que sus propios widgets incorporan características de HTML5 como pueden ser el marcador de posición, el requerimiento de atributos o los nuevos tipos <input>.
Virtualenv
Permite crear entornos Python aislados. Con esto queremos decir, que podremos mantener una aplicación sin tenerla que actualizar, ya que cualquier cambio en sus librerías o dependencias podría comprometer el correcto funcionamiento de la misma.
Fabric
Herramienta y librería de Python para línea de comandos, que nos facilitará la tarea de desplegar aplicaciones vía SSH.
Haystack
Haystack es un motor de búsqueda modular para Django que nos ofrece una API unificada que puede conectar diferentes back-ends de búsqueda sin tocar una sola línea de código. Viene acompañado de una interfaz para realizar búsquedas, muy similar a QuerySets de Django que tiene por nombre SearchQuerySet.
Tastypie
En Tastypie encontramos un framework API de servicios web de Django. Nos ofrece un conveniente y poderoso a la par que personalizable interfaz muy similar a REST. Podremos crear en unos minutos y con unas pocas líneas de código un API para nuestro proyecto. Es una de las herramientas de esta lista que tiene una amplísima documentación que facilitará enormemente su implementación y desarrollo.
Celery
Este paquete nos facilita una cola de tareas para nuestro proyecto en Django, que centra sus miras principalmente en el procesamiento en tiempo real de las órdenes, a la vez que brinda soporte a la programación de tareas.
Easy-thumbnails
Tal y como su nombre indica, estamos frente a un gestor de miniaturas muy potente y versátil. Básicamente crea miniaturas de imágenes existentes y si la información de la imagen fuente es modificada rectificará la miniatura generando una nueva que contenga la información actualizada. Cuenta con un amplísimo repertorio de opciones con las que trabajar y configurar las miniaturas de nuestro proyecto, además de una comunidad muy volcada en el desarrollo de esta herramienta.
Esperamos que esta información os sea de ayuda, eso lo espero; lo que sí que os ayudará a todos es el increíble curso de programación con Django que podéis encontrar en el catálogo de cursos de OpenWebinars , y que además tiene un comienzo muy próximo... Un tutor de amplia experiencia en el sector nos guiará gracias a la metodología de webinars por un entorno de desarrollo profesional y desarrollaremos un microblog al estilo Twitter.
Recordad también suscribiros para estar al día de los webinars, artículos y noticias de interés del mundo de la programación, el software libre o las nuevas tecnologías de la información en general.
Imagen: Justin Lilly Lightning talk7. Por yashh