Mise en place de l’API Django

Objectif

Mettre en place une API REST robuste et reproductible permettant :

  • l’accès programmatique aux données stockées en base PostgreSQL,

  • l’exposition des données à des applications externes (Streamlit, analyses),

Le framework Django est utilisé comme socle applicatif, complété par Django REST Framework pour la construction de l’API.

—

Initialisation du projet Django

Le projet a été initialisé à l’aide de la commande standard :

  • django-admin startproject backend

La structure repose sur : - un projet principal backend (configuration globale), - une application dédiée rest_api pour l’exposition des endpoints.

Le fichier manage.py sert de point d’entrée unique pour : - les migrations, - la gestion des utilisateurs, - le lancement du serveur, - les commandes d’administration.

—

Configuration ASGI et WSGI

Deux interfaces d’exécution sont configurées :

  • WSGI (backend.wsgi) pour un déploiement classique synchrone,

  • ASGI (backend.asgi) pour une compatibilité future avec des serveurs asynchrones.

Ces deux fichiers exposent un objet application initialisé à partir du module de configuration backend.settings.

Ce double support facilite l’adaptation à différents environnements de déploiement sans modifier le code applicatif.

—

Gestion des paramètres et des secrets

Les paramètres sensibles ne sont jamais codés en dur dans la logique applicative.

Les variables suivantes sont injectées via l’environnement :

  • paramètres de connexion PostgreSQL : DB_HOST, DB_NAME, DB_USER, DB_PASSWORD, DB_PORT ;

  • paramètres Django : DEBUG, ALLOWED_HOSTS, CSRF_TRUSTED_ORIGINS, CORS_ALLOWED_ORIGINS.

Cette approche garantit : - la séparation entre code et configuration, - la portabilité entre environnements (local, Render), - la sécurité des secrets.

—

Connexion à la base PostgreSQL

Django est configuré pour utiliser PostgreSQL comme moteur de base de données.

La configuration repose exclusivement sur les variables d’environnement, permettant une connexion directe à une base distante hébergée sur Supabase.

Ce choix assure la cohérence avec : - le pipeline d’ingestion Python, - l’API REST, - les outils d’analyse et de visualisation.

—

Applications et middleware

Les applications installées incluent :

  • les modules Django standards (authentification, sessions, admin),

  • Django REST Framework pour l’API,

  • rest_api pour la logique métier,

  • corsheaders pour la gestion des accès cross-origin.

Les middlewares sont configurés pour : - autoriser les requêtes cross-origin depuis des applications externes, - servir les fichiers statiques via Whitenoise, - garantir la sécurité et la gestion des sessions.

—

Routage de l’API

Le routage global est défini dans backend.urls :

  • /admin/ : interface d’administration Django,

  • /api/ : point d’entrée de l’API REST.

Les routes détaillées de l’API sont définies dans l’application rest_api, permettant une séparation claire entre configuration globale et logique métier.

—

Création automatisée du superutilisateur

Un script dédié permet la création automatique d’un superutilisateur lors du déploiement.

Le comportement est contrôlé par des variables d’environnement : - activation conditionnelle (CREATE_SUPERUSER=true), - identifiants fournis via variables sécurisées.

Cette approche facilite : - l’initialisation des environnements distants, - l’accès à l’interface d’administration sans intervention manuelle, - la reproductibilité des déploiements.

—

Rôle de Django dans l’architecture globale

Dans l’architecture du projet, Django joue le rôle de :

  • couche d’accès aux données via l’ORM,

  • API REST exposant les données normalisées,

  • point de jonction entre la base PostgreSQL et les applications clientes.

Cette couche applicative constitue un composant central entre l’ingestion des données et leur exploitation analytique.