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.