Una forma muy común de obtener información de diferentes fuentes es mediante una API REST, que proporciona distintos API endpoints los cuales son accesibles con tal de conseguir unos datos determinados. Django REST Framework es un framework que nos permite el fácil desarrollo de una API REST en Python. Actualmente esta tecnología se usa en diversos proyectos, como por ejemplo la API del Racó o el proyecto UOC índex.

Introducción

Una forma muy común de obtener información de diferentes fuentes es mediante una API REST, que proporciona distintos API endpoints los cuales son accesibles con tal de conseguir unos datos determinados. Django REST Framework es un framework que nos permite el fácil desarrollo de una API REST en Python. Actualmente esta tecnología se usa en diversos proyectos, como por ejemplo la API del Racó o el proyecto UOC índex.

Instalación

Una buena práctica es crear un entorno virtual con todo lo necesario para poder ejecutar la API REST creada con Django:

# Create the project directory
mkdir tutorial
cd tutorial
# Create a virtualenv to isolate our package dependencies locally
virtualenv env
source env/bin/activate # On Windows use `env\Scripts\activate`

Una vez instalado el entorno, aún nos hace falta instalar las librerías necesarias de Python para poder usar Django:

# Install Django and Django REST framework into the virtualenv
pip install django
pip install djangorestframework
# Set up a new project with a single application
django-admin.py startproject tutorial . # Note the trailing '.' character
cd tutorial
django-admin.py startapp quickstart

Ahora ya lo tenemos todo a punto para empezar nuestro proyecto con Django.

Estructura del proyecto

Analizando lo que se ha creado dentro de la carpeta tutorial podemos ver como es la estructura de un proyecto con Django:

Estructura de la aplicación

Analizando lo que se ha creado dentro de la carpeta quickstart podemos ver como es la estructura de una aplicación Django:

Es muy recomendable crear ficheros adicionales, especialmente estos dos:

Tutorial

Una vez realizada la instalación tal como se describe en el punto Instalación, crearemos un nuevo endpoint para describir con más detalle cómo funciona Django:

  1. Abrimos el archivo tutorial/tutorial/settings.py y añadimos la lista INSTALLED_APPS ‘rest_framework’ y ‘quickstart’.
  2. Abrimos el archivo tutorial/tutorial/urls.py y añadimos a la lista urlpatterns la siguiente url: url(r’^quickstart/’, include(‘quickstart.urls’)). Con este paso ya hemos hecho la configuración básica de nuestra aplicación quickstart.
  3. Ahora añadiremos nuestras primeras vistas a tutorial/quickstart/views.py:
    def index(request):
        return HttpResponse("Hello, world. You're at the quickstartapp index.")
    class Example(APIView):
    """
    Returns data from the football player Antoine Griezmann
    """
        def get(self, request):
            data = {'Player': 'Antoine griezmann','Team': 'Atlético de Madrid', 'Age': 25}
            return HttpResponse(json.dumps(data, indent=4, sort_keys=True), content_type="application/json")
    
  4. Vamos a /tutorial/quickstart y creamos el archivo urls.py:
    from django.conf.urls import url
    from . import views
    urlpatterns = [
        url(r'^index/', views.index, ),
        url(r'^griezmann/', views.Example.as_view(), name="'example'),
    ]
    
  5. Vamos a /tutorial y ejecutamos python manage.py runserver (por defecto se ejecuta en el puerto 8000) y comprobamos el funcionamiento de nuestro nuevo endpoint. Tendríamos que obtener un resultado llamando al endpoint http://localhost:8000/quickstart/griezmann/ parecido a este:
    {
    «Age»: 25,
    «Player»: «Antoine Griezmann»,
    «Team»: «Atletico de Madrid»
    }

Esto es solo un pequeño ejemplo donde los datos son generados cada vez que se accede a la vista correspondiente. Creando un fichero queries.py, podríamos definir una manera más compleja de conseguir los datos, permitiendo que cada vez que se llamase a una determinada vista se fuesen a buscar los datos correspondientes a una base de datos determinada.

Para acabar

Hemos visto cómo empezar a desarrollar una API REST con Django, que nos permite un desarrollo muy simple pero a la vez muy potente y fácilmente escalable. Podéis encontrar la documentación oficial del framework en: http://www.django-rest-framework.org/