REST API con Django
Al crear una API REST con Django, aprenderás a crear modelos de datos, vistas, URLs y serializadores, así como la configuración de la base de datos y la gestión de solicitudes HTTP. También aprenderás a utilizar ORMs (Object Relational Mapping) para trabajar con bases de datos en Python, así como a añadir seguridad a tu API REST utilizando herramientas de autenticación y autorización en Django.
Por último, conocerás más sobre cómo proteger tu API contra ataques como XSS (Cross-site Scripting) y CSRF (Cross-site Request Forgery).
¿Por qué aprender Django y Django REST Framework?
¿Qué es Django?
Django es un framework de código abierto escrito en Python. Al conocer las bases de Python y tener conocimientos básicos en HTML, CSS y JavaScript, puedes crear aplicaciones web con Django.
¿Qué es Django REST Framework?
Es una extensión de Django que permite construir aplicaciones web API (Interfaz de Programación de Aplicaciones) RESTful de manera fácil y rápida. DRF proporciona una amplia gama de herramientas y funciones para crear, documentar y probar APIs, lo que facilita su integración con otras aplicaciones y servicios.
Crear el APP con Django
Estructura del proyecto
- Project
- APP
Son independientes entre sí.
Paso 1: Configuramos el entorno
Primero nos aseguramos de tener Python y Node instalados en el sistema.
Para instalar Django, lo haremos con pip:
pip install Django
Paso 2: Crea un nuevo proyecto de Django
Abre una terminal y ejecuta el siguiente comando para crear el proyecto:
django-admin startproject tienda_virtual
Paso 3: Navegar al directorio del proyecto
Inserta lo siguiente:
cd tienda_virtual
Dentro del proyecto que acabas de generar, el siguiente comando creará una aplicación llamada tienda_virtual con la estructura de un proyecto Django básico.
python manage.py startapp api
Esto creará un directorio llamado api dentro del proyecto.
Nos ubicamos en la carpeta creada donde se alojará el proyecto y generamos nuestro entorno virtual con el siguiente comando.
python3 -m venv .venv
Activamos el entorno virtual:
source .venv/bin/activate
El entorno virtual sirve para instalar las dependencias del proyecto. Con esto evitamos que las dependencias se instalen a nivel global en nuestro equipo. Podemos tener diferentes entornos para diferentes proyectos.
Levantamos a la aplicación:
python3 manage.py runserver
Paso 4: Definir los modelos
En el archivo api/models.py, definimos los modelos que representarán los datos de tu tienda virtual. Por ejemplo, podrías tener modelos para Producto y Carrito de compras.
Cuando modificas los modelos en Django, necesitas realizar migraciones para reflejar esos cambios en la base de datos. Las migraciones son archivos que describen las alteraciones en la estructura de la base de datos y permiten mantener la consistencia entre los modelos de Django y la base de datos subyacente.
Para ejecutar las migraciones, sigue estos pasos:
- Abre una terminal y navega hasta el directorio de tu proyecto. Ejecuta el siguiente comando:
python manage.py makemigrations
Con esto se formarán las migraciones.
Este comando buscará los cambios en tus modelos y creará los archivos de migración correspondientes en el directorio api/migrations.
- Una vez generadas las migraciones, debes aplicarlas a la base de datos. Ejecuta el siguiente comando:
python manage.py migrate
Éste ejecutará las migraciones pendientes y actualizará la base de datos de acuerdo con los cambios realizados en tus modelos.
Es importante destacar que, cada vez que realices cambios en tus modelos, deberás repetir estos pasos para crear y aplicar las migraciones correspondientes.
Si deseas verificar el estado actual de las migraciones, puedes usar el siguiente comando:
python manage.py showmigrations
Este comando mostrará una lista de migraciones y resaltará las que se han aplicado.
Paso 5: Configurar la base de datos
Abrimos el archivo tienda_virtual/settings.py y configuramos la base de datos según tu preferencia. En este caso, utilizaremos SQLite para una configuración rápida:
Paso 6: “generar” las vistas y las rutas
En el archivo api/views.py, definimos las vistas que manejarán las solicitudes y respuestas de la API.
A continuación, en el archivo tienda_virtual/urls.py, define las rutas para tus vistas:
Paso 7: Configurar el archivo de los serializers
Crea un archivo llamado serializers.py en el directorio api para definir los serializadores, responsables de la serialización y deserialización de los objetos de Django en formatos compatibles con la API.
Paso 8: Iniciar el servidor de desarrollo
Ejecuta el siguiente comando:
python manage.py runserver
Esto iniciará el servidor en http://localhost:8000/.
Puedes probar la API accediendo a http://localhost:8000/productos/ en tu navegador o utilizando herramientas como cURL o Postman.
Ahora tienes una REST API básica para una tienda virtual. Puedes enviar solicitudes HTTP a las rutas definidas para crear productos, obtener los, recibir información del carrito y agregar productos al carrito. Recuerda que este es solo un ejemplo básico y puedes expandirlo y personalizarlo según las necesidades de tu proyecto.
Sin embargo, un proyecto completo puede variar según tus requerimientos y características adicionales que desees implementar. A continuación, te proporcionaré algunas áreas que podrías considerar para completar tu proyecto:
- Autenticación y autorización: Si deseas agregar un sistema de autenticación para usuarios, podrías utilizar el framework Django REST Framework (DRF) para implementar autenticación basada en tokens, JWT u otras estrategias de autenticación. También podrías establecer permisos y roles para restringir el acceso a ciertas rutas o recursos.
- Pagos y envíos: Si tu tienda virtual involucra procesamiento de pagos y envíos, puedes integrar servicios de pago en línea, como Stripe o PayPal, así como servicios de envío para calcular tarifas y generar etiquetas de envío.
- Imágenes y archivos adjuntos: Si necesitas manejar imágenes de productos u otros archivos adjuntos, puedes utilizar bibliotecas como Django Storages, Amazon S3 o Google Cloud.
- Pruebas y manejo de errores: Es importante implementar pruebas unitarias y de integración para garantizar el correcto funcionamiento de tu API. Además, debes considerar el manejo adecuado de errores y excepciones para brindar respuestas claras y consistentes en caso de fallos.
Espero que este artículo te ayude mucho en tus proyectos con Django.
¡Hasta la próxima!
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.