La parte fundamental de Django: El patron MTV

En el articulo anterior Adán ya nos había comentado sobre lo indispensable que es el “ceñirse fielmente” al patrón MTV (o MVC) al utilizar Django. Ahora hablemos de los templates, parte importante de este patrón.

Templates

Nos dice Adán que una de las partes más fuertes de Django es su motor de plantillas, el mismo permite abstraer completamente la presentación de las demás partes de la aplicación, esto gracias a etiquetas y filtros:

Filtros
“En las plantillas de Django hacemos uso de la rica cantidad de filtros que pone a nuestra disposición. Desde convertir a mayúsculas, eliminar etiquetas html y agregar saltos de línea.” comentó Adán y agregó que gracias a estos filtros es más fácil tener una clara separación entre datos, lógica y presentación.

Para dar formato a una fecha:

Ejemplo de filtros en plantillas

<p class=”fecha”>{{ video.fecha|date:"F • j"}}</p>

Algunas baterías incluidas o Módulos Django

Ya habíamos mencionado que Django es el framework con baterías incluidas, aqui te comentamos algunas de ellas:

Localización
Nos comenta Adán sobre GeoIP, una librería de localización basada en C: “La integración que trae Django con esta librería da mucho poder a la hora de crear sitios internacionales.” Agrega que “esta librería básicamente es una base de datos gigantesca, optimizada para ser de rápido acceso, con los rangos de direcciones IP por regiones, países, etc.”

Feed
A su vez el módulo de sindicalización se ciñe perfectamente a los patrones propuestos por Django, permite tener todos los métodos y propiedades de los modelos, así como usar plantillas y filtros para la presentación.

Formularios
Django viene con una forma fácil de crear formularios a partir de modelos, con validación automática y completamente personalizable desde la plantilla, Adán nos explica como:

Clase para formulario automático

Un formulario es tan sencillo como:

class VideoComentarioForm(ModelForm):
class Meta:
model  = VideoComentario
fields = ('autor', 'autor_email', 'autor_url', 'content')

Plantilla para personalizar formulario

<form>
<label for="author">nombre</label>{{ form.autor }}
{{ form.autor.errors }}
<label for="email">email</label>{{ form.autor_email }}
{{ form.content.errors }}
…
</form>

Lo poco que no tiene Django, se soluciona

Si es que Django no incluye algunos módulos, es extremadamente sencillo crear módulos adicionales que encapsulen funcionalidad extra.

Imágenes

En Mejorando.la hay diferentes tipos de imágenes; estas imágenes distintas son generadas recortando y optimizando desde el administrador, cuando se crea el video. Nos cuenta Adán que esta tarea fue muy fácil de realizar gracias a la librería PIL.

“Esta librería está en C por lo que es muy veloz, en Python te vas a encontrar muchos módulos en C, sobre todo aquellos que requieren más procesamiento.” agrega Adán.

Ejemplo de uso del módulo PIL

import Image
image = Image.open(path)
image = image.resize((newWidth, newHeight), Image.ANTIALIAS)
image.save(path)[ ejemplo ]

Consejos para mejorar la web con django y python

Adán nos dio algunas consideraciones para tener en cuenta al llevar el sitio a producción:

  • Configurar un administrador, que recibirá alertas cuando algo salga mal.
  • No olvides crear tus páginas 400 y 500 (páginas de errores).
  • Profundizar en los múltiples parámetros de configuración que ofrece Django. Antes de llevar cualquier sitio Django a producción lee la guia para que veas todo lo que puede “tweakear”.
  • Con una línea puedes activar el uso de memcached para cachear las páginas de Django. Es muy simple y puede hacer una gran diferencia en el rendimiento de tu aplicación cuando tienes muchas visitas.
  • Hay muchas formas de llevar a producción un sitio Django. Mejorando.la utiliza una combinación de Nginx (para archivos estáticos) y mod_wsgi, que es un módulo de apache, para el código python.
  • Con respecto al hosting, hostgator es una buena opción para iniciar probando Django, sin pagar mucho.

El trabajo en equipo. No todo es programación

Además de las tecnologías que mencionamos, también se necesitaron herramientas que ayudaron al trabajo en equipo.

  1. BaseCamp, lo más importante es mantenerse comunicado con tu equipo.
  2. Github, es una parte central para asegurar la fluidez del trabajo ya que acelera mucho el proceso de comunicación al llevar un registro de “quién hizo qué”. En Mejorando.la se manejan dos ramas principales, hay dos sitios montados uno en desarrollo y otro que es el produccion.
  3. Feedback, al desarrollar un sitio es importante lo que opinan los usuarios, para ello Twitter ha brindado una enorme cantidad de feedback muy valioso, “nunca ignoren a un usuario que les reporta un bug”.
  4. Diferentes dispositivos, cada uno de los que forman parte del equipo cuentan con dispositivos diferentes, aún así ayuda cualdo alguien manda un error con una captura de pantalla en X dispositivo.
  5. Newrelic, es una herramienta muy completa para el monitoreo del sitio.


Es importante que estés consciente de que con Django las posibilidades son muchas, y conforme vayas profundizando en el tema irás aprendiendo trucos.

Ya sabes cómo se utiliza python, django y otras tecnologías para desarrollar el sitio de Mejorando.la. El sitio es Open Source y el código está disponible en Github.

Y si quieres profundizar más en el tema recuerda que puedes revisar la guía Django y la guía Python.