Diseñado para tener una sintaxis clara y concisa, Python es un lenguaje que permite a los desarrolladores adoptar varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Su demanda ha aumentado exponencialmente en estos momentos: desde el desarrollo web con Django hasta la industria financiera y el Big Data.
Django es para perfeccionistas con los pies en el suelo. Pone énfasis en el re-uso, la conectividad y extensibilidad de componentes y el desarrollo veloz. ¿Suena bien, cierto? Pues hoy Alberto Casero, experto en software inteligente e Instructor de KeepCoding, demuestra con pocas líneas de código el gran poder de este framework.
¿Qué encontrarás en este post?
ToggleAPI Rest para gestionar archivos con tan sólo 33 líneas de código
Al igual que Django y el Dr.Schultz hacen una perfecta pareja de cazarrecompensas en la película de Tarantino, Django y REST Framework son una pareja perfecta para los desarrolladores de backend. Si hay algo que valoro de Django, además de su integrados sistema de usuarios y grupos y web de administración, es lo bien pensado que está. Por suerte su filosofía se extiende entre los desarrolladores, como es el caso del excelente REST Framework.
Gracias a la mezcla de ambos, podemos hacer cosas increíbles con muy pocas líneas de código y hoy vamos a demostrarlo con 33 líneas contando imports, comentarios y líneas en blanco para que el código sea legible. Sí, en el título del post dice 30 líneas ¡pero redondeamos a la baja, que hay líneas en blanco!
Lo primero que necesitamos, es instalar Django y REST Framework en nuestro sistema para poder empezar a trabajar. Para ello usamos pip (gestor de paquetes de Python) desde nuestra consola:
Una vez instaladas nuestras armas, vamos a crear un projecto Django:

Para ello, accedemos a la carpeta del proyecto y creamos nuestra aplicación:


- file: que almacenará la ruta al archivo que subamos.
- created_ on: campo que almacenará la hora de creación del archivo.
- modified_ on: campo que almacenará la hora de última modificación del archivo.
Bien, sin tener que escribir nada más, Django se encargará pon nosotros de:
- Gestionar si la carpeta donde vayamos a subir los archivos existe o no (de no existir la creará).
- Controlar si ya existe un archivo con el mismo nombre que el archivo que subimos para renombrarlo.
- Asignar una fecha de creación del archivo automáticamente.
- Asignar una fecha de modificación del archivo cada vez se modifique (también de manera automática).
Lo siguiente que tenemos que hacer es crear un serializador, el cual se encargará de actuar como traductor entre nuestro modelo y los datos que nos envíen a través de las peticiones HTTP de nuestro API Rest.
Creamos un archivo serializers.py en la carpeta files con el siguiente contenido:

Ahora tenemos que conectar de algún modo este ViewSet con las URLs del API Rest que hablábamos antes. Para ello, utilizaremos un Router. Abrimos el archivo urls.py esta vez de la carpeta files_manager añadimos 5 líneas:







Si ahora abrimos en nuestro navegador la URL: http://127.0.0.1:8000/files/ deberíamos ver el API navegable funcionando.
¿API navegable?
Sí, REST Framework proporciona un API navegable que nos permite probar rápidamente nuestros APIs ¡sin necesidad de utilizar clientes REST! Para probar la subida de archivos con un cliente REST, deberemos poner la cabecera Content-Type: multipart/form-datapara el envío de la petición POST (porque los archivos no se suben en JSON!). Como veis, con muy poco esfuerzo hemos creado algo muy potente. Pero, ¿y si os decimos que con unas 5 líneas de código extra podemos incluir lo siguiente?
- Control de autenticación para que los usuarios puedan usar el API sólo si están autenticados (+1 línea).
- Asignar la autoría de la creación de archivos a un usuario del sistema a la aplicación integrada en Django para gestión de usuarios y grupos (+3 líneas).
- Hacer visibles los archivos en el administrador web de Django (+1 línea). Sí, Django nos proporciona también un backend de administración web sin apenas esfuerzo.
Como veis, Django es un framework pensado para hacer la vida más fácil a los desarrolladores web, proporcionando herramientas que nos permiten olvidarnos del desarrollo repetitivo y centrarnos en desarrollar únicamente nuestra lógica de negocio. Al igual que en la película de Tarantino Django no desaprovecha las balas, en este caso, Django no desaprovecha las líneas de código.
Y recordad: la D es muda
Ya sea para crear backends o web apps completas, Django y Python son como Django y Dr. King Shultz: ¡una pareja indetenible! Descubre más posibilidades y domina esta tecnología con el KeepConding Startup Engineering Master Bootcamp.





