Páginas

domingo, 11 de agosto de 2013

Django -Web Framework (MVC) escrito en Python

Django - Web Framework


¿Qué es Django?

Es uno de los más famosos Frameworks MVC que rigen actualmente el desarrollo ágil de aplicaciones web.

Antes de comenzar con este pequeño tutorial es necesario tener conceptos básicos de Python y del Modelo Vista Controlador.(Si lo desconoces explicarémos un poco más adelante, te recomendamos el siguiente vínculo : MVC for dummies).

Junto con RoR(Ruby on Rails), JSF(Java Server Faces), Java + Spring, y Grails (API que usa Spring como núcleo), cakePHP; Django se convierte en una fuerte alternativa para poder generar una página web dinámica sin tanto dolor.



Sigue un patron CRUD(Create, Read, Update, Delete) que son las operaciones básicas en una base de datos; para realizar ese proceso que muchas veces se convierte en el dolor de cabeza de muchos desarrolladores; Django incorpora un ORM ( Object-Relational Mapping ) para facilitar las operaciones antes mencionadas.

Django cuenta con una gran comunidad, además de que hace capaz la incorporación de otras librerias de Python (SciPy, por ejemplo) para aumentar su poder de procesamiento.

Si no te encuentras familiarizado con este paradigma, Django podrá ayudar a que comprendas su funcionamiento.

Django, Hola Mundo y URL Mappings.


Para comenzar, se hará el típico Ejemplo "Hello, World".

Antes de arrancar, es necesario contar con Python(2.7 o mayor), pip instalado (Python Package Manager, Si no cuentas con pip, sigue las indicaciones del siguiente vínculo para saber de que se trata. Click Aquí ), y al menos un editor de texto, te recomendamos Sublime-Text.

Para instalar Django, sólo basta con escribir en la terminal lo siguiente.

Ahora solo basta con checar si fue instalado correctamente, abriendo la consola de python y checando si existe django, como se muestra a continuacion.

Si aparece un mensaje de error, siempre es posible regresar al proceso de la primer imagen.

Si todo va bien, necesitaremos una carpeta para poder almacenar el proyecto; entramos a la carpeta antes creada e inicializamos un proyecto de Django, como se muestra a continuacio.
Hasta ahorita todo va muy fácil, veamos que estructura nos ha creado Django para comenzar a trabajar.

Les daré una breve descripción de la funcionalidad de cada archivo.

  • manage.py : Archivo de linea de comandos que nos permitira la interaccion con Django.
  • settings.py : Configuraciones basicas, como autentificacion, bases de datos, manejo de archivos, directorios y Logging.
  • urls.py: Las antes mencionadas URL Mappings, (se hablará de ellas más adelante).
  • wsgi.py : Archivo de configuración del servidor de Pytho, no se tocará por el momento.
"Todo muy bonito ... pero ... ahora que procede? "

Vamos a crear una funcionalidad muy sencilla, aún no conectaremos nada a una base de datos, antes que nada se necesita familiarizar con el framework.

Crearemos un archivo en la carpeta de sample, que se llame views.py, y añadiremos el siguiente contenido.

from django.http import HttpResponse
import datetime
def current_datetime(response):
    now = datetime.datetime.now()
    html = "<html><body> Datetime : %s </body></html>" % now
    return HttpResponse(html)
def addTime(response,offset):
    offset = int(offset)
    dt = datetime.datetime.now() + datetime.timedelta(hours = offset)
    html = "Time %s plus %s hours is %s"%(datetime.datetime.now(),offset,dt)
    return HttpResponse(html)

Y modificaremos el archivo urls.py, dejandolo como el siguiente.

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'sample.views.current_datetime', name='home'),
    url(r'^time/plus/(\d{1,2})/$','sample.views.addTime',name='addTime'),#views -> addTime(3)

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)
"No se por que he cambiado los archivos... ", por el momento creanme, pronto les explicaré que es lo que hemos hecho.

 Es hora de correr el proyecto, anotemos en la terminal lo siguiente.


Si todo nos ha salido bien, deberá de marcarnos 0 errores y por pura simple curiosidad hay que entrar a la dirección que aparece en la consola.

Nos dejará una pantalla como la siguiente



Muy bien es hora de explicar lo que hicimos, en el archivo views.py declaramos dos metodos, "current_datetime" y "addTime"; el primero solo muestra la hora del sistema, y el segundo añade un valor "offset" e imprime en el navegador la suma de los valores...

En el archivo urls.py; le indicamos como es que las peticiones se van a estar manejando es decir; cuando accedemos a http://127.0.0.1:8000/ nos aparece en pantalla el contenido de "current_datetime" ...  "WTF??" ... Lo único que se hizo fue redireccionar la peticion a la raiz "/" al metodo current_datetime ...

Que pasaria si queremos llamar al metodo, "addTime", si intentamos abrir la dirección http://127.0.0.1:8000/addTime ... nos mandará una pantalla como la siguiente.
 
Eso se debe a que no existe una relación dentro de las URL Mappings, la manera correcta de acceder al metodo sería la siguiente: http://127.0.0.1:8000/time/plus/3/ donde "3" es el offset que se había configurado dentro de patron de la URL que se encuetra ligado al metodo. La siguiente captura muestra el comportamiento.

Si nos damos cuentas, no fue necesario el uso de peticiones GET o POST para poder acceder o interactuar con la pagina, ahora solo imagina si deseas encontrar la informacion de un usuario ... podrias hacerlo desde la URL ... mandar un mensaje en específico, cerrar una sesion, todo de una manera transparente y limpia, tanto para el usuario como para el desarrollador.

Existen demasiadas aplicaciones para las URLMappings, sólo es necesario tener un conocimiento básico de patrones.

URL Mappings, CRUD, ORM son algunos de los conceptos que hacen de Django una alternativa libre para el desarrollo web.

En nuestra proxima publicacion, trabajaremos en el concepto de CRUD y en la parte del modelo.

Nunca esta por demás consultar la tan nutrida documentación de Django en su página oficial.

La próxima semana continuaremos con éste tutorial, cualquier duda, aclaracion, queja o sugerencia, deja un comentario. Hasta luego!


No hay comentarios:

Publicar un comentario