# Programme de Django Introduction

TODO: Remplacer les images de code par des sections Markdown


---

## Découvrir Django

- Design Pattern MVC : structure, utilisation
- Présentation de Django : paradigme, versions, documentation
- Autres frameworks web Python existants : Flask, Pylons, Pyramid etc.
- Environnements de développement intégrés
- Environnements de développement console
- Installation de Django et paquets annexes (applications Django)

---

### Structure générale d'un projet Django

- Structure générale d'un projet
- Structure générale d'une application

Atelier : Création d'un projet et d'une application Django

---

## Afficher des pages avec Django

- Routage d'URL
- Écriture de vues
- Intrpduction aux Vues basées sur des classes
- Introduction au middleware

---

## Templating (gabarits) avec Django

- Principe du templating général
- Principe du templating avec Django
- Espaces réservés (interpolation)
- Filtres de templates
- Balises de templates (tags) et structures de contrôle
- Héritage de templates
- Balises spéciales : include, load, url et static
- Balises et filtres personnalisés

---

Ateliers :

- Créer et afficher un template dans la console
- Utiliser un contexte dans un template (+filtres)
- Utiliser des structures de contrôle
- Utiliser l'héritage et les blocs
- Découvrir les balises spéciales
- Écrire des filtres personnalisés

---

## Saisir des données avec les formulaires

- Définition de formulaires manuels
- Utilisation de formulaires
- Utilisation des formulaires dans les templates
- Valeurs par défaut des formulaires, traitement, sécurité etc.
- Validation de la saisie utilisateur
- Gestion des téléchargements et fichiers média

---

## Persistance des données avec des bases de données (ORM)

- ORM : intérêt, avantages
- ORM Django : configuration, fonctionnalités
- Définition des modèles de données
- Définition des relations entre tables (clés)
- Configuration et classe Meta
- Héritage, Proxy et modèles abstraits
- Interroger la base de données
- Enregistrer et modifier des données dans la base (+ concurrence)
- Système de migrations de schéma Django

---

## Utiliser des formulaires avec la base de données

- Définition de formulaires basés sur les modèles
- Utilisation des formulaires et validation
- Gestion des téléchargements

---

## Interface d'administration de Django

- Présentation de l'interface d'administration intégrée
- Configuration de l'administration

---

## L'authentification et les utilisateurs

- L'application d'authentification de Django
- S'authentifier programmatiquement dans une vue
- S'authentifier avec un formulaire

---

## Traduction d'un projet Django (I18N)

- Traduction dans le code Django
- Traduction dans les templates

Ateliers : 
- Ajout de traduction au code de projet
- Ajout de traduction dans les templates 

Atelier : I18N de l'application

---

## Concepts avancés

- Envoyer des emails
- Créer des vues de téléchargment
- Lancement de tests d'un projet Django (unittest) :
  - Test Runner
  - Test Client
- Déploiement d'un projet Django
- Interconnexion avec les réseaux sociaux (django-allauth)
- API REST en Django
- Interfaçage avec un framework front-end (ex. Vue.js ou Angular)
- Interfaçage avec un frawework front-end basé sur le contenu HTML (ex. HTMX) 
- Intégration avec Git et une usine logicielle

