Guía 22: Django - DRF + Firebase Admin Python SDK#
Actividades previas#
Ambiente de desarrollo#
Acceda a su proyecto django_api_suite en Codespaces o en su máquina local.
Cree y utilice la(s) rama(s) de desarrollo.
Cree y habilite el ambiente virtual de desarrollo, con:
python -m venv env source env/bin/activate
Instale las librerías de requirements.txt, con:
pip install -r requirements.txt
Actividades en clases#
Paquete: Firebase Admin Python SDK#
Instale la librería Firebase Admin Python SDK en su ambiente de desarrollo:
pip install firebase-admin
Registre el Firebase Admin Python SDK en el archivo
backend_data_server/settings.pydel proyecto:INSTALLED_APPS = [ ... "firebase_admin", "rest_framework", ... ]
Utilice su cliente de IAG generativa para explicar qué es Firebase Admin Python SDK y cuáles son sus principales características.
Firebase Admin Python SDK#
Credenciales#
En Firebase Console, acceda a su proyecto landing.
Acceda a Configuración de proyecto > Cuentas de servicio > SDK de Firebase Admin para generar la clave privada.
Acceda al servicio Realtime Database y copie la URL de referencia a la base de datos no relacional.
Nota
La URL de referencia luce como https://<PROJECT-ID>-default-rtdb.firebaseio.com/
Secrets#
En la raíz del repositorio, cree la carpeta
secretsAgregue el archivo con la clave privada a la carpeta
secretsy renombre el archivo comolanding-key.json.Añada al archivo .gitignore la carpeta
secrets.... __marimo__/ secrets/
Configuración en el proyecto#
Edite el archivo
backend_data_server/settings.py, con:... import os import firebase_admin from firebase_admin import credentials ... DEFAULT_AUTO_FIELD = ... # Coloque la ruta relativa al archivo con la clave privada FIREBASE_CREDENTIALS_PATH = credentials.Certificate("secrets/landing-key.json") # Inicialice la conexión con el Realtime Database con la clave privada y la URL de referencia firebase_admin.initialize_app(FIREBASE_CREDENTIALS_PATH, { 'databaseURL': 'https://<PROJECT-ID>-default-rtdb.firebaseio.com/' })
Utilice su cliente de IAG generativa para explicar cómo se configura el Firebase Admin SDK en un proyecto Django y cuáles son los pasos necesarios para establecer una conexión con Firebase Realtime Database.
Aplicación: Landing API#
Cree una la aplicación landing_api en su proyecto.
Registre la aplicación en el archivo de configuración
backend_data_server/settings.pydel proyecto:Registre la ruta "landing/api/" con las subrutas de la aplicación landing_api
Modifique el archivo
landing_api/views.pycon su cliente de IAG generativa, de acuerdo con:Importe los módulos APIView, Response y status de DRF, el módulo db de Firebase Admin SDK y el módulo datetime de Python,
Cree la clase LandingAPI vista basada en clases,
Dentro la clase, agregue el atributo name con el valor "Landing API" y el atributo collection_name con el nombre de la colección en Firebase Realtime Database que se utilizará para las operaciones CRUD,
Cree el archivo
landing_api/urls.pycon la ruta "index/" a la vista LandingAPI.Levante el servidor de desarrollo de Django.
Revise los cambios en el navegador con la URL raíz, seguida por la ruta /landing/api/index/
GET#
Nota
Considere la documentación Agrega el SDK de Firebase Admin a tu servidor.
Edite el archivo
landing_api/views.pyCon su cliente de IAG generativa crear el código necesario para el método get que:
Obtenga una referencia a la colección en Firebase Realtime Database,
Utilice el método get de la referencia para obtener todos los elementos de la colección,
Devuelva un arreglo JSON con los datos obtenidos y el código de estado HTTP 200 OK, para que el cliente pueda consumir la información de la colección.
Ver el código
... class LandingAPI(APIView): ... def get(self, request): # Referencia a la colección ref = db.reference(f'{self.collection_name}') # get: Obtiene todos los elementos de la col ección data = ref.get() # Devuelve un arreglo JSON return Response(data, status=status.HTTP_200_OK)
Levante el servidor de desarrollo de Django.
Revise los cambios en el navegador en la URL en la ruta /landing/api/index/
POST#
Edite el archivo
landing_api/views.pyCon su cliente de IAG generativa crear el código necesario para el método post que:
Obtenga los datos del cuerpo de la solicitud,
Obtenga una referencia a la colección en Firebase Realtime Database,
Obtener la fecha y hora actual en el servidor y formatearla con el siguiente formato personalizado: «dd/mm/yyyy, hh:mm:ss a. m./p. m.» en minúsculas y con la notación española (a. m. y p. m.).
Añadir esa fecha formateada al objeto recibido en la solicitud bajo el campo «timestamp»
Utilice el método push de la referencia para guardar el objeto en la colección,
Devuelva el ID del objeto guardado y el código de estado HTTP 201 Created, para que el cliente pueda confirmar que el objeto fue creado exitosamente.
Ver el código
... class LandingAPI(APIView): ... def post(self, request): data = request.data # Referencia a la colección ref = db.reference(f'{self.collection_name}') current_time = datetime.now() custom_format = current_time.strftime("%d/%m/%Y, %I:%M:%S %p").lower().replace('am', 'a. m.').replace('pm', 'p. m.') data.update({"timestamp": custom_format }) # push: Guarda el objeto en la colección new_resource = ref.push(data) # Devuelve el id del objeto guardado return Response({"id": new_resource.key}, status=status.HTTP_201_CREATED)
Levante el servidor de desarrollo de Django.
Revise los cambios en el navegador en la URL en la ruta /landing/api/index/
Gestión de dependencias#
Genere el archivo requirements.txt con la lista de paquetes utilizados, con:
pip freeze > requirements.txt
Desactive el ambiente virtual de desarrollo, con:
deactivate
Versionamiento#
Versione local y remotamente la(s) rama(s) de desarrollo en el repositorio django_api_suite.
Genere la(s) solicitud(es) de cambios (pull request) para la rama principal y apruebe los cambios.
Conclusiones#
Actividades autónomas#
Recursos extras#
En redes:
When you're building an app, you'll often need a way to send and get back data between your app & a server.
— freeCodeCamp.org (@freeCodeCamp) July 16, 2025
And using a REST API is a great way to do this.
In this tutorial, @_udemezue teaches you how to build a REST API in Django using the Django Rest Framework.… pic.twitter.com/aPeAxcpTAM