Application complète avec Django : de la conception à la production
Application complète avec Django est un cours de niveau avancé de 5 leçons (environ 5 h 38), avec 16 exercices et 15 questions de quiz. Prérequis : Django fondamentaux, Mise en page responsive (Flexbox, Grid). Le cours demande un environnement de projet complet, prévu dans une phase ultérieure de la plateforme.
- Python pour le web
- Avancé
- 5 leçons
- 5 h 38
- 16 exercices
- Environnement de projet complet (phase 2)
Le cours en bref
Ce cours avancé guide la réalisation d'une application web complète avec Django, sur le modèle d'un outil de gestion de projets. Tu structures le projet et sa configuration, sécurises les comptes et les droits d'accès, optimises l'ORM, construis une interface CRUD responsive enrichie de JavaScript, puis testes et prépares la mise en production.
Ce que tu sauras faire
- Structurer un projet Django professionnel configuré par variables d'environnement, avec un modèle utilisateur personnalisé
- Mettre en place l'authentification et un contrôle d'accès par objet et par rôle
- Modéliser des relations complexes et éliminer les requêtes N+1
- Construire une interface CRUD paginée avec les vues génériques, des endpoints JSON et fetch
- Tester l'application, durcir sa configuration et la déployer avec Gunicorn, PostgreSQL et WhiteNoise
Programme des 5 leçons
- Découper un projet en applications cohérentes et définir un modèle utilisateur personnalisé dès le départ
- Externaliser la configuration (secrets, DEBUG, hôtes, base de données) dans des variables d'environnement
- Organiser gabarits, fichiers statiques et fichiers téléversés
Architecture d'un projetConfiguration par environnementModèle utilisateur personnalisé
- 02
Authentification et autorisations
- Mettre en place connexion, déconnexion et inscription avec les outils de django.contrib.auth
- Protéger des vues avec login_required, LoginRequiredMixin ou LoginRequiredMiddleware
- Appliquer des autorisations : permissions, groupes et contrôle d'accès par objet
- 03
Relations et performances de l'ORM
- Modéliser des relations plusieurs-vers-un et plusieurs-vers-plusieurs avec contraintes et index
- Détecter et corriger le problème N+1 avec select_related et prefetch_related
- Calculer des indicateurs en base avec annotate, Count filtré, F et des transactions
Relations ForeignKey et ManyToManyProblème N+1Annotations et expressions
- 04
Vues génériques, API JSON et interface responsive
- Construire les écrans CRUD avec ListView, DetailView, CreateView, UpdateView et DeleteView
- Paginer les listes et filtrer le queryset selon l'utilisateur
- Exposer des données en JSON et les consommer en JavaScript avec fetch et le jeton CSRF, dans une mise en page responsive
Vues génériques basées sur les classesPaginationRéponses JSON et fetch
- 05
Tests, sécurité et mise en production
- Écrire des tests de modèles et de vues avec TestCase et le client de test
- Durcir la configuration de production et utiliser check --deploy
- Déployer avec Gunicorn, PostgreSQL, collectstatic et WhiteNoise
Projet final
Atelier : application de gestion de projets en production
Finalise et mets en ligne l'application Atelier : inscription et connexion, projets avec propriétaire et membres invités, tâches étiquetées avec échéances, tableau de bord d'avancement calculé en base, interface responsive avec bascule des tâches en JavaScript, endpoint JSON d'indicateurs, suite de tests couvrant les droits d'accès, et déploiement avec configuration de production validée par check --deploy.
Livrables
- Le dépôt Git du projet (applications comptes et projets, gabarits, statiques, migrations)
- Une suite d'au moins quinze tests, dont des tests de refus d'accès et d'assertNumQueries
- Un Dockerfile ou une configuration d'hébergement, un .env.example et un README de déploiement
- L'URL de l'application déployée ou une démonstration enregistrée
Critères d'évaluation
- Aucun utilisateur ne peut voir ou modifier les données d'un autre (vérifié par des tests)
- Les pages de liste et le tableau de bord n'ont pas de requêtes N+1
- Le code utilise les vues génériques, des mixins et des modèles avec contraintes adaptées
- L'interface est responsive, accessible et les interactions JavaScript respectent la protection CSRF
- La configuration de production est sécurisée : DEBUG désactivé, secrets hors du dépôt, HTTPS, check --deploy sans avertissement
Questions fréquentes
Quel niveau faut-il pour suivre ce cours ?
Il faut maîtriser les fondamentaux de Django (URL, vues, modèles, ORM, gabarits, formulaires) et les bases de la mise en page responsive en CSS.
Quelle application est construite ?
Une application de gestion de projets et de tâches avec comptes utilisateurs, membres, droits d'accès, tableau de bord, interactions JavaScript et API JSON, prête pour la production.
Le déploiement est-il abordé concrètement ?
Oui : configuration par variables d'environnement, check --deploy, HTTPS, collectstatic avec WhiteNoise, Gunicorn, PostgreSQL et migrations à chaque déploiement, ainsi qu'un exemple de Dockerfile.
Django REST framework est-il couvert ?
Le cours montre comment exposer des données en JSON avec JsonResponse et les consommer avec fetch ; Django REST framework est présenté comme l'étape suivante pour une API complète.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « Application complète avec Django » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.