Django
Une formation Django complète de cinq jours couvrant tout, de la création du projet au déploiement en production. Construisez des applications web complètes avec des APIs REST, des fonctionnalités temps réel et les bonnes pratiques modernes.
Durée
5 jours (35 heures)
Format
50 pour cent présentation, 50 pour cent exercices
Prérequis
Solides fondamentaux Python requis, connaissances HTML/CSS de base recommandées
Supports
Machines virtuelles fournies, supports de cours électroniques
Jour 1 — Fondations Django
Introduction à Django
- Création de projet : django-admin, settings, structure du projet
- Configuration : bases de données, fichiers statiques, variables d'environnement
- Architecture des apps : création d'apps, registre, apps réutilisables
Modèles
- Fondamentaux de l'ORM : types de champs, options, classe Meta
- Migrations : makemigrations, migrate, compression, migrations de données
- Relations : ForeignKey, ManyToManyField, OneToOneField
- QuerySets : filtrage, tri, agrégation, annotation, objets F et Q
Django Admin
- Personnalisation de l'admin : ModelAdmin, list_display, list_filter, search_fields
- Actions personnalisées, modèles inline, champs en lecture seule
- Filtres admin et vues admin personnalisées
Jour 2 — Vues, Templates et Formulaires
Vues et URLs
- Vues basées sur des fonctions : request, response, raccourcis
- Vues basées sur des classes : ListView, DetailView, CreateView, UpdateView, DeleteView
- Mixins : LoginRequiredMixin, PermissionRequiredMixin, mixins personnalisés
- Configuration des URLs : path, re_path, include, espaces de noms
Templates
- Héritage de templates : extends, block, include
- Tags et filtres de templates : natifs et personnalisés
- Processeurs de contexte : ajout de données contextuelles globales
Formulaires
- Formulaires Django : Form, ModelForm, validation, nettoyage
- Formsets : formsets de modèles, formsets inline
- Fichiers statiques et médias : configuration, service, backends de stockage
Jour 3 — APIs REST
Django REST Framework
- Sérialiseurs : ModelSerializer, sérialiseurs imbriqués, validation
- ViewSets et routeurs : opérations CRUD, actions personnalisées
- Authentification : session, token, authentification JWT
- Permissions : permissions natives, permissions au niveau objet
- Filtrage, recherche et pagination
Alternative Django Ninja
- Django Ninja : framework API async-first avec annotations de type
- Schémas Pydantic pour la validation des requêtes et réponses
- Comparaison des approches DRF et Django Ninja
Tests d'API
- Tests d'APIs avec le client de test Django et les outils de test DRF
- Documentation d'API avec OpenAPI et Swagger
Jour 4 — Sujets avancés
Internals Django
- Signaux : pre_save, post_save, signaux du cycle de vie des requêtes
- Middleware : traitement requête/réponse, middleware personnalisé
- Commandes de gestion : création de commandes personnalisées pour l'automatisation
- Cache : cache par vue, cache de fragments de template, API de cache bas niveau
Temps réel et tâches de fond
- Django Channels : support WebSocket, consumers, routage
- Notifications en temps réel et patterns de chat
- Celery pour les tâches de fond : tâches, planification, backends de résultats
Sécurité
- Bonnes pratiques de sécurité : prévention CSRF, XSS, injection SQL
- Patterns d'authentification et d'autorisation
- HTTPS, HSTS et Content Security Policy
Jour 5 — Tests, Déploiement et Projet
Tests
- Tests unitaires et tests d'intégration avec Django TestCase
- factory_boy : création de données de test avec des factories
- Couverture de tests : mesure et amélioration de la couverture
Déploiement
- Docker : conteneurisation d'applications Django
- Gunicorn et Uvicorn : serveurs WSGI et ASGI
- Nginx : configuration de reverse proxy
- Mise en place de pipeline CI/CD avec GitHub Actions ou GitLab CI
Performance et Projet
- Optimisation des performances : select_related, prefetch_related, indexation de la base de données
- Django Debug Toolbar et profilage
- Projet pratique : construction d'une application complète, du cahier des charges au déploiement
