FastAPI Django: Integración de FastAPI y Django

FastAPI Django: Integración de FastAPI y Django

FastAPI y Django son dos frameworks de desarrollo web de Python que ofrecen diferentes ventajas y desventajas. FastAPI es un framework moderno y rápido, mientras que Django es un framework más maduro y completo.

En este tutorial, veremos cómo integrar FastAPI y Django para crear una aplicación web que combine las ventajas de ambos frameworks.

Prerrequisitos

Para seguir este tutorial, necesitarás los siguientes prerrequisitos:

  • Python 3.8 o superior
  • Pip
  • NGINX (opcional)

Creación de la aplicación

Comenzaremos creando una aplicación Django básica.

django-admin startproject myproject

Esto creará una nueva carpeta llamada myproject con los siguientes archivos:

  • myproject/__init__.py
  • myproject/settings.py
  • myproject/urls.py
  • myproject/wsgi.py

Editaremos el archivo settings.py para configurar la base de datos.

Python
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

También crearemos una aplicación Django para nuestra API.

python manage.py startapp api

Esto creará una nueva carpeta llamada api con los siguientes archivos:

  • api/__init__.py
  • api/admin.py
  • api/apps.py
  • api/models.py
  • api/tests.py
  • api/views.py

Editaremos el archivo api/views.py para crear una vista simple que devuelva una lista de usuarios.

Python
from django.shortcuts import render
from django.http import JsonResponse

from .models import User


def index(request):
    users = User.objects.all()
    return JsonResponse({"users": [user.to_dict() for user in users]})

Creación de la aplicación FastAPI

Ahora crearemos una aplicación FastAPI para nuestra API.

pip install fastapi

Esto instalará el framework FastAPI.

Crearemos un nuevo archivo llamado api.py para nuestra aplicación FastAPI.

Python
from fastapi import FastAPI

app = FastAPI()


@app.get("/users")
def get_users():
    from api.models import User

    users = User.objects.all()
    return {"users": [user.to_dict() for user in users]}


if __name__ == "__main__":
    app.run()

Esta aplicación FastAPI simplemente devuelve una lista de usuarios.

Integración de las aplicaciones

Para integrar las aplicaciones, crearemos un nuevo archivo llamado wsgi.py.

Python
import os

from django.core.wsgi import get_wsgi_application
from fastapi import FastAPI


app = FastAPI()


@app.get("/users")
def get_users():
    from api.models import User

    users = User.objects.all()
    return {"users": [user.to_dict() for user in users]}


os.environ["DJANGO_SETTINGS_MODULE"] = "myproject.settings"
application = get_wsgi_application()

Este archivo cargará la aplicación Django y la aplicación FastAPI.

Para ejecutar la aplicación, podemos usar el siguiente comando:

python wsgi.py

Esto iniciará el servidor web en el puerto 8000.

Prueba de la aplicación

Podemos probar la aplicación usando Postman o cualquier otro cliente HTTP.

GET http://localhost:8000/users

Esto devolverá una lista de usuarios.

Conclusiones

En este tutorial, hemos visto cómo integrar FastAPI y Django para crear una aplicación web que combine las ventajas de ambos frameworks.

FastAPI proporciona un rendimiento y una escalabilidad superiores, mientras que Django proporciona una base sólida para el desarrollo web.

La integración de FastAPI y Django permite a los desarrolladores aprovechar las ventajas de ambos frameworks para crear aplicaciones web de alta calidad.

**Op