Introducción a Django Rest Framework

Juan Pablo Romero
Software EngineerDjango Rest Framework es una aplicación Django que permite construir proyectos software bajo la arquitectura REST, incluye gran cantidad de código para reutilizar (Views, Resources, etc.) y una interfaz administrativa desde la cual es posible realizar pruebas sobre las operaciones HTTP como lo son: POST y GET.
Cabe resaltar que los mentores de este proyecto hacen uso intensivo de las Generic Views, las cuales desde Django 1.3 se basan en clases (class) y no en funciones (def), esto con el objetivo de aprovechar las ventajas de la programación orientada a objetos.
Esta introducción contempla los siguientes temas:
Instalación y configuraciónImplementación de la API RESTful, a partir de una clase Resource genéricaSitio administrativo de Django REST FrameworkCómo consumir nuestra API RESTful desde Java ScriptLecturas recomendadasInstalación y configuraciónPara instalar Django REST Framework simplemente ejecutamos en la consola:
https://gist.github.com/296689... O agregamos djangorestframework al fichero requerimientos (requirements.txt) y ejecutamos:
https://gist.github.com/296858... Para configurar Django REST Framework dentro de nuestro proyecto incluímos <strong>djangorestframework</strong> en INSTALLED_APPS (settings) y a continuación ejecutamos la sentencia
https://gist.github.com/296860... Para registrar frente a Django la aplicación recién instalada.
Implementación de la API RESTful, a partir de una clase Resource genéricaLos recursos están directamente relacionados con los modelos Django, para el ejemplo usaremos el siguiente modelo:
https://gist.github.com/343234... Para la creación del recurso, usaremos la clase Resource: ModelResource, que viene incluida en Django REST Framework.
Para respetar convenciones, los recursos se definen dentro del fichero resources.py que para este ejemplo tiene como contenido :
https://gist.github.com/07d2d2... En la primera línea se importa la clase de la cual heredará PointOfSaleResource.
Los atributos sobrescritos son los siguientes:
model: Se utiliza para indicarle a la clase PointOfSaleResource el modelo que mapeará y expondrá como recurso.orderingLe indicamos al recurso que ordene los datos devueltos en el GET, en orden alfabético basándose en el campo name.excludeLe indicamos al recurso, qué valores no devolverá al invocar la operación GET.Al momento de crear nuevos registros en la base de datos con la operación POST, se tendrán en cuenta los campos declarados como obligatorios y las demás restricciones impuestas en los modelos Django.
Las urls quedarían de la siguiente forma:
https://gist.github.com/3ba140... El valor que se envía como argumento en ListOrCreateModelView.as_view(resource = PointOfSaleResource), corresponde al recurso que se se usará cuando se estén validando las peticiones y filtrando las respuestas.
Sitio administrativo Django REST FrameworkListo!!!, ahora solo resta acceder a la URL desde el navegador Web y ver como nuestro pequeño sitio de administración esta preparado para ser utilizado como plataforma de pruebas y verificación de nuestra API RESTful.
Sitio Administrativo Django REST API - GETSitio administrativo Django REST Framework- sección GET
Esta primera sección del sitio administrativo permite observar el resultado de la operación GET sobre el recurso PointOfSaleResource, además es posible visualizar la información retornada en diferentes formatos como XML, XHTML, JSON, TXT, entre otros.
Enseguida notamos que efectivamente la personalización que indicamos en la clase PointOfSaleResource surtió efecto, puesto que los campos incluidos en el exclude, no aparecen dentro de la respuesta GET y los registros están ordenados alfabéticamente teniendo en cuenta el atributo name.
Sitio Administrativo Django REST API - POSTSitio administrativo Django REST Framework- sección POST
La sección POST nos permite crear nuevos registros haciendo uso de la operación POST. Como comente anteriormente las restricciones que coloquemos en nuestros modelos serán tenidas en cuenta a la hora de crear registros utilizando POST, por ejemplo si algún campo esta marcado como null=False y se intenta crear un nuevo registro sin llenar ese campo, inmediatamente se mostrará el mensaje: Este campo es obligatorio.
Cómo consumir nuestra API RESTful desde JavascriptA continuación presentamos un pequeño ejemplo de la operación GET realizada sobre la API recién construida utilizando Javascript.
En la siguiente imagen se puede apreciar el fragmento de código HTML donde se desplegará los datos de los POS (Points of Sales) y el JS que captura el evento del click para llamar a la función load_pos_rest:
Función" class="redactor-autoparser-object">https://gist.github.com/a72207... load_pos_rest:
https://gist.github.com/46caac... En la función load_pos_rest se realiza una petición AJAX apuntando a la URL Django: /pos/pos_rest/ y se recorre la lista de elementos con el resultado de la operación GET.
Por último ofrecemos una imagen de Firebug con el resultado de realizar la operación GET sobre la URL y otra con la imagen del HTML en el navegador.
Firebug_REST_GETFirebug - Resultado de la operación GET
HTML_resultado_GETHTML - Resultado de la función load_pos_rest()
Espero que esta entrada haya sido de su agrado y nos vemos hasta una próxima ocasión. Éxitos para todos!!!
Lecturas recomendadas
Qué es RESTDjango Rest Framework
Written by Juan Pablo Romero

Juan Pablo designs and builds robust software solutions with a focus on performance and usability. His problem-solving skills and attention to detail ensure high-quality and efficient applications.