Como parte del staff del
Concurso Nacional de Emprendimiento e Innovación Móvil 2014 se me solicitó realizar un minitutorial acerca de como crear una API REST
usando el framework para desarrollo web "Django" el cual está escrito en Python y con el cual se pueden crear poderosas aplicaciones y sitios web altamente versátiles.
El tutorial se dividirá de la siguiente forma:
Primera parte: Creación de proyecto, apps y modelo.
Segunda parte: Django REST Framework Configuraciones de Acceso.
Anexos: Instalación de Python. Instalación de paquetes vía pip/easy_install. Archivos estáticos en Django. Uso básico de Git. Variables de entorno en Windows.
Asumiendo que ya saben usar
pip install o
easy_install lo que sigue es instalar todas las librerías que se señalan en el archivo requirements.txt. El código fuente de todo el proyecto y el requirements.txt lo descargan de aqui:
https://bitbucket.org/Lvcios/eimtutorial/src
Supongamos que queremos realizar una aplicación que muestre información sobre películas, es decir, críticas, actores, director, datos importantes como cuanto recaudó, en que año salio, cuantas nominaciones a los oscares tuvo, etc. Es claro ver que el presentar esta información en una base de datos requiere de mas de una tabla si hablamos de SQL o de modelos embebidos si estamos usando alguna base de datos NoSQL. Como sea, el primer paso es crear un proyecto en Django con el siguiente comando:
python django-admin.py startproject EIMBackendTutorial
Lo anterior creará una carpeta con el nombre especificado junto con los archivos mínimos necesarios para correr el proyecto. Para correr el proyecto entramos en la carpeta del mismo y ejecutamos el siguiente comando:
python manage.py runserver
Este comando nos indicará que nuestra aplicación está corriendo en determinada dirección la cual es por defecto
http://127.0.0.1:8000/ Para romper el proceso basta con presionar ctrl + c en la consola.
Lo que sigue es crear nuestro modelo en Django, para eso tenemos que crear una aplicación la cual llamaré "Movies" y la creo de la siguiente manera:
python manage.py startapp peliculas
Al igual que startproject, startapp crea una carpeta con los archivos mínimos necesarios para crear una aplicación. Dentro de esa carpeta tenemos el archivo models.py que es donde escribiremos nuestro modelo de datos que posteriormente será leído por el api que crearemos con RESTFramwork. Básicamente el modelo de datos seria el siguiente:
#endcoding:utf-8
from django.db import models
# Create your models here.
class Director(models.Model):
nombreDirector = models.CharField(max_length = 100)
pais = models.CharField(max_length = 100)
def __unicode__(self):
return self.nombreDirector
class Actor(models.Model):
nombreActor = models.CharField(max_length = 100)
pais = models.CharField(max_length = 100)
def __unicode__(self):
return self.nombreActor
class Pelicula(models.Model):
nombre = models.CharField(max_length = 100)
anio = models.DateField()
sinopsis = models.TextField()
director = models.ManyToManyField(Director, related_name = 'director')
actor = models.ManyToManyField(Actor, related_name = 'actor')
def __unicode__(self):
return self.nombre
class Critica(models.Model):
pelicula = models.ForeignKey(Pelicula, related_name = 'critica')
critica = models.TextField()
def __unicode__(self):
return unicode(self.pelicula) + ' ' + unicode(self.critica)
Y para poder visualizarlos en el administrador por defecto de django creamos un archivo llamado admin.py dentro de la misma carpeta con lo siguiente
# -*- coding: UTF-8 -*-
from django.contrib import admin
from peliculas.models import *
admin.site.register(Director)
admin.site.register(Actor)
admin.site.register(Pelicula)
admin.site.register(Critica)
Con esto ya es posible agregar datos a la base de datos desde el Administrador. Ahora solo queda sincronizar la bd con el siguiente comando:
python manage.py syncdb
Es súper importante mencionar que deben registrar la aplicación en el settings.py. Busquen dentro de ese archivo la sección de INSTALLED_APPS y solo agregan 'peliculas'. No olviden colocar la coma al final.
Al momento de sincronizar la base de datos nos mostrará los errores, si es que los hay. Si no hay errores entonces nos pedirá crear un súper usuario. Este paso lo podemos omitir si queremos pero en este tutorial si lo crearemos.
Una vez sincronizados los modelos con la base de datos corremos el proyecto con el comando indicado anteriormente y en el explorador tecleamos:
http://127.0.0.1:8000/admin/. Encontrarán un pantalla de log-in y a continuación verán el listado de los modelos que creamos. Desde el administrador de Django ya poseé la capacidad de realizar inserciones, modificaciones, consultas y eliminaciones de registros. Recomiendo explorarlo poco a poco.
El administrador posee muchas opciones las cuales se pueden personalizar a través de código. De igual forma, los modelos se pueden manipular desde la consola y realizar operaciones y tests. Esos son temas que no veremos aquí pero están muy bien documentados en la página oficial de
DjangoProject.
Hasta aquí llega la primera parte del tutorial.
El código se lo pueden descargar de aqui:
https://bitbucket.org/Lvcios/eimtutorial/src
SEGUNDA PARTE
NOTA: Estos tutoriales estarán en video, aumentados y corregidos en la página del EIM proxiamente.