En esta página:
Demo
Una API REST nos permite escribir y leer datos de manera rápida, flexible, dinámica y simple desde un cliente a un servidor manejando determinados protocolos de seguridad como los JSON Web Tokens (JWT) que brindan una capa de seguridad a los EndPoints o rutas de nuestra API REST, en este tutorial te enseñaré a Como Crear una API REST con Django 3.1.1 + Consumir Datos en una Aplicación Android, vamos con ello.
Partes
Antes de continuar te invito a leer los siguientes artículos:
- Que es Django, Historia y tu primer Hola Mundo (Corregido: 31-05-2019)
- Conceptos Iniciales para desplegar Django
- Como usar Django y React JS (Método Manual, no Librería)
- Como integrar Django y Bootstrap 4
- Como crear un CRUD con Django 2 y Bootstrap 4 – Parte 1 (Python 3.7)
- 5 Servicios de Hosting VPS ideales para publicar un Proyecto Creado con Django
- Como Integrar Firebase en Django 3.0.7 – Parte 1
- 7 Proyectos que han sido Creados con Django Framework
- Puedes leer más en la categoría Django
Asimismo te invito a escuchar el Podcast: “¿ Que Hago Si No Tengo Los Recursos Para Dedicarme A La Programación ?”:
Spotify: | Sound Cloud: |
Bien ahora continuemos con el Post: Como Crear una API REST con Django 3.1.1 + Consumir Datos en una Aplicación Android – Parte 1.
Detalles del Proyecto
El proyecto constará de 5 EndPoints los cuales serán /login, /registro, /listarpostres, /listarusuarios y /listarjugos, para que los usuarios puedan leer por ejemplo los datos de postres y de jugos, deberá enviar un token (JWT = JSON Web Token) en su solicitud, con esto le damos una capa de seguridad a nuestra API REST.
Una vez terminada la API REST, crearemos una pequeña aplicación Android para consumir los datos de esta API REST.
Entorno Virtual
Antes de continuar con el proyecto primero debo de crear un directorio para mi proyecto, asi mantenemos el orden. Crearé un directorio con el nombre api_rest_django, en donde colocaré todos los archivos de mi proyecto.
1 2 3 4 5 6 7 8 |
// Directorio con el nombre "api_rest_django" /api_rest_django ... Acá irán todos los archivos del proyecto ... ... |
En Django existen diferentes paquetes que nos permiten crear un entorno virtual rápidamente, yo suelo usar el paquete virtualenv. Para instalarlo voy a mi consola de comandos y ejecuto el siguiente comando:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
pip install virtualenv Collecting virtualenv Using cached virtualenv-20.10.0-py2.py3-none-any.whl (5.6 MB) Collecting filelock<4,>=3.2 Using cached filelock-3.3.2-py3-none-any.whl (9.7 kB) Collecting six<2,>=1.9.0 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting platformdirs<3,>=2 Using cached platformdirs-2.4.0-py3-none-any.whl (14 kB) Collecting backports.entry-points-selectable>=1.0.4 Using cached backports.entry_points_selectable-1.1.1-py2.py3-none-any.whl (6.2 kB) Collecting distlib<1,>=0.3.1 Using cached distlib-0.3.3-py2.py3-none-any.whl (496 kB) Installing collected packages: filelock, six, platformdirs, backports.entry-points-selectable, distlib, virtualenv Successfully installed backports.entry-points-selectable-1.1.1 distlib-0.3.3 filelock-3.3.2 platformdirs-2.4.0 six-1.16.0 virtualenv-20.10.0 |
Despues de instalar el paquete, voy a crear mi entorno virtual, yo le pondré de nombre mientornovirtual, tu le puedes poner el nombre que desees. Ejecuto el siguiente comando para crear mi entorno virtual.
1 2 3 4 |
# Comando para crear un entorno virtual con el paquete 'virtualenv' python -m venv mientornovirtual |
Luego de ejecutar el comando anterior, se me ha creado un directorio llamado mientornovirtual.
1 2 3 4 5 |
// Directorio con el nombre "cruddjango31" /api_rest_django ├── /mientornovirtual // Se creó este directorio |
Y ahora debemos activar nuestro entorno virtual ejecutando el siguiente comando:
1 2 3 4 5 |
# Comando para activar el entorno virtual source mientornovirtual/Scripts/activate (mientornovirtual) |
Cuando el entorno virtual se activa, aparece entre parentesis el nombre del entorno virtual, es decir: (mientornovirtual).
NOTA: Recuerda siempre activar tu entorno virtual, antes de continuar trabajando en un proyecto con Django.
Ahora si, continuemos con la creación de nuestro proyecto.
Creación de Nuevo Proyecto
Antes de crear el proyecto voy a verificar la versión de Django que tengo instalada, para esto ejecuto el siguiente comando.
1 2 3 4 5 6 |
# Verificamos la versión de Django python -m django --version 3.1.1 |
Ahora debemos instalar Django para que se aisle en nuestro entorno virtual, ejecutamos el siguiente comando para instalarlo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
pip install django Collecting django Downloading Django-4.0-py3-none-any.whl (8.0 MB) Collecting asgiref<4,>=3.4.1 Using cached asgiref-3.4.1-py3-none-any.whl (25 kB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB) Collecting tzdata; sys_platform == "win32" Downloading tzdata-2021.5-py2.py3-none-any.whl (339 kB) Installing collected packages: asgiref, sqlparse, tzdata, django Successfully installed asgiref-3.4.1 django-4.0 sqlparse-0.4.2 tzdata-2021.5 WARNING: You are using pip version 20.2.3; however, version 21.3.1 is available. You should consider upgrading via the 'e:\old_h_xampp\htdocs\xampp\nc\tutoriales\blog\api_rest_django\mientornovirtual\scripts\python.exe -m pip install --upgrade pip' command. (mientornovirtual) |
Paso seguido crearé un nuevo proyecto para mi API REST, ejecuto el siguiente comando.
1 2 3 4 5 6 7 |
# Creamos un nuevo proyecto con Django 3.1.1 django-admin startproject api_rest_django # Ingresamos al directorio del proyecto creado cd api_rest_django |
A mi proyecto le he puesto de nombre api_rest_django, tu le puedes poner el nombre que desees, no hay problema.
Luego de crear el proyecto, Django me ha generado un conjunto de directorios y archivos indispensables para que mi proyecto funcione sin problemas.
1 2 3 4 5 6 7 |
/api_rest_django ├── /api_rest_django ├── /mientornovirtual ├── db.sqlite3 ├── manage.py |
Siempre es bueno verificar si el proyecto se ha creado correctamente, para esto vamos a iniciar el servidor local de Django, ejecutamos el siguiente comando.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Iniciamos el servidor de Django python manage.py runserver Watching for file changes with StatReloader [21/Sep/2020 08:27:48] "GET / HTTP/1.1" 200 16351 [21/Sep/2020 08:27:49] "GET /static/admin/css/fonts.css HTTP/1.1" 304 0 [21/Sep/2020 08:27:49] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 304 0 [21/Sep/2020 08:27:49] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 304 0 [21/Sep/2020 08:27:49] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 304 0 [21/Sep/2020 08:28:34] "GET / HTTP/1.1" 200 16351 Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. September 21, 2020 - 08:27:14 Django version 3.1.1, using settings 'api_rest_django.settings' Starting development server at http://127.0.0.1:8000/ |
Entonces si abrimos la dirección local con el puerto 8000 que usa Django para correr su servidor http://localhost:8000/ podemos ver que el proyecto se ha creado correctamente y Django me muestra una vista por defecto cuando creamos un nuevo proyecto.
Ahora pasaremos a configurar la base de datos y sus migraciones respectivas.
Base de Datos
Voy a usar el motor de Base de Datos MySQL, he creado manualmente una base de datos llamada igual que el nombre del proyecto api_rest_django, para definir la base de datos abrimos el archivo settings.py que se encuentra en api_rest_django > api_rest_django > settings.py
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/api_rest_django ├── /api_rest_django ├── /_pycache_ ├── _init_.py ├── asgi.py ├── settings.py // Abrimos este archivo ├── urls.py ├── wsgi.py ├── /mientornovirtual ├── db.sqlite3 ├── manage.py |
En el archivo settings.py importamos el modulo “os” en la parte inicial y luego nos vamos hasta dice DATABASES y agregamos la siguiente configuración en donde definimos principalmente la base de datos api_rest_django, colocamos el nombre de usuario root y un password determinado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# Importamos el módulo 'os' import os # Configuramos la Base de datos DATABASES = { 'sqlite': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'api_rest_django', 'USER': 'root', 'PASSWORD': 'mipassword', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'sql_mode': 'traditional', } } } |
En Windows debemos de instalar un cliente MySQL para que Django pueda conectarse a MySQL. Para instalarlo ejecuto el siguiente comando:
1 2 3 4 5 6 7 8 9 10 11 12 |
pip install mysqlclient Collecting mysqlclient Using cached mysqlclient-2.1.1-cp311-cp311-win_amd64.whl (178 kB) Installing collected packages: mysqlclient Successfully installed mysqlclient-2.1.1 [notice] A new release of pip available: 22.3.1 -> 23.0 [notice] To update, run: python.exe -m pip install --upgrade pip (mientornovirtual) |
Bien con esto tenemos configurada la base de datos para el proyecto.
Bueno hasta aquí llegamos con esta Parte 1 en donde creamos un nuevo proyecto con Django 3.1.1, verificamos si el proyecto se creo correctamente y configuramos nuestra base de datos.
Ten Paciencia, lo que quiero es que conozcas bien como se crea este proyecto y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje.
Nota (s)
- En la Parte 2 de este tutorial, crearemos las migraciones para las tablas de la base de datos y otros detalles.
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.