DJANGO
Franck FOURNIER
ISBN : 978-2-7460-9270-9
39
Django
Industrialisez vos développements Python
Ce livre sur Django s’adresse principalement aux développeurs
Python désireux de maîtriser ce framework pour gérer leurs projets
de A à Z. Un développeur web utilisant une autre technologie y trou-
vera matière à évaluer l’apport de Django et à pouvoir s’y plonger
facilement.
L’auteur propose une prise en main efficace de Django et conduit
progressivement le lecteur à la maîtrise de bases solides sur la
conception de projets Django, du développement au déploie-
ment en production.
Une introduction présente les frameworks web en général et Django
en particulier, son historique, sa communauté et ses avantages et
permet de comprendre les raisons de sa popularité. L’auteur pro-
pose ensuite une prise en main de Django puis détaille ses prin-
cipes techniques et enfin les outils de développement et les IDE
qui permettent de travailler avec Django encore plus facilement.
Une série de chapitres couvre les principales notions de Django : la
structure d’un projet, l’ORM, les vues et le routage des urls, les
templates, le middelware. Un chapitre spécifique traite du puissant
outil de création d’applications de type Back Office qu’est l’admi-
nistration Django.
Enfin, l’auteur conclut le livre par deux chapitres relatifs aux appro-
fondissements et à l’utilisation d’applications Django existantes
dans vos projets.
Le lecteur pourra télécharger sur le site www.editions-eni.fr, le projet
résultat du tutoriel décrit dans le livre et un projet de réservation de
salles avec intégration d’une application tierce.
Avant-propos • Présentation du framework Django • Pour débuter
Les outils de développement Structure d’un projet et des applica-
tions L’ORM et les modèles Django Les requêtes HTTP, les URL et
les vues Les templates • Le middleware Django • L’administration
de Django Les formulaires Django La traduction et la localisa-
tion • Approfondissements • Les applications Django
Franck FOURNIER
De formation Ingénieur Informatique,
Franck FOURNIER a exercé de très
nombreuses années comme Direc-
teur de Recherche et Développe-
ment dans diverses sociétés. Il est
aujourd’hui consultant indépendant,
Expert Python, et ses dernières mis-
sions l’ont conduit sur divers projets
Django et Python de grande enver-
gure. À travers les pages de ce livre,
il partage volontiers cette expertise
avec le lecteur pour lui fournir un livre
réellement pragmatique sur les déve-
loppements Python avec Django.
Pour plus
d’informations :
Les chapitres du livre
léchargement
www.editions-eni.fr
.fr
Sur www.editions-eni.fr :
b Le code source des projets
présentés dans le livre.
b Un script pour utiliser Django sur
un hébergement cgi mutualisé.
Industrialisez vos
développements
Python
Django
Industrialisez vos développements Python
1
Table des matières
Avant-propos
1. Public concerné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2. Prérequis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3. Objectifs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4. Organisation du livre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Chapitre 1
Présentation du framework Django
1. Les frameworks en général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2. Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Fiche technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Bref historique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 Principes techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 Les forces et faiblesses de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.1 Les points forts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.2 Les faiblesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3. Pourquoi adopter Django ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1 Python « batteries included » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Principes philosophiques de conception . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3 Avantages pour le développeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4. Comparatif avec d’autres frameworks web. . . . . . . . . . . . . . . . . . . . . . . . . . 33
Les éléments à télécharger sont disponibles à l'adresse suivante :
http://www.editions-eni.fr
Saisissez la référence de l'ouvrage EIDJA dans la zone de recherche
et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.
2
Industrialisez vos développements Python
Django
Chapitre 2
Pour débuter
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2. Principes de base, fondamentaux et vue d’ensemble. . . . . . . . . . . . . . . . . . . 38
3. Installer Django et démarrer en cinq minutes . . . . . . . . . . . . . . . . . . . . . . . . 40
4. Premiers pas (démarrage pas à pas). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1 Créer votre premier projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Créer votre application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.3 Le site d’administration de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.4 Les vues Django. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.5 Les templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.6 Utilisation des noms d’URL avec des contextes
de nommage (namespaces). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.7 Les formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.8 Les vues génériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.9 Gestion de tests automatiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.10 Les fichiers statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Chapitre 3
Les outils de développement
1. Les outils de développement et les IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1.1 Eclipse et Pydev. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1.1.1 Créer un nouveau projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
1.1.2 Travailler avec un projet existant . . . . . . . . . . . . . . . . . . . . . . . 105
1.1.3 Utilisation de Django. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
1.1.4 Run/Debug avec Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.1.5 Utilisation de l’option autoreload du serveur
de test de Django avec PyDev . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.2 PyCharm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.2.1 Les atouts de PyCharm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
1.2.2 Quelques critiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
1.2.3 Quelques critiques infondées . . . . . . . . . . . . . . . . . . . . . . . . . . 109
1.2.4 Pycharm en action en quelques exemples . . . . . . . . . . . . . . . . 110
1.3 Autres éditeurs ou IDE pouvant être utilisés avec Python. . . . . . . . . 112
3
Table des matières
2. Les outils de mise au point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2.1 Les fichiers de log (traces d’exécution) . . . . . . . . . . . . . . . . . . . . . . . . 114
2.2 Django Debug Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
2.2.1 Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
2.2.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
2.3 Débogueurs Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.3.1 pdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.3.2 pudb (mode console uniquement) . . . . . . . . . . . . . . . . . . . . . . 121
2.3.3 trepan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
2.4 Les outils d’analyse de performance (profiling) . . . . . . . . . . . . . . . . . 122
2.4.1 django-profiler 2.0.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.4.2 hotshot et Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.4.3 RunSnakeRun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
2.5 Couverture de code (code coverage) . . . . . . . . . . . . . . . . . . . . . . . . . . 128
2.5.1 django-coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
2.5.2 django-nose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
2.5.3 coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Chapitre 4
Structure d’un projet et des applications
1. Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
1.1 Projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
1.2 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
2. Le fichier settings.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Chapitre 5
L’ORM et les modèles Django
1. Principes et généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
2. Intérêt de l’ORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
3. Les modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
3.1 Utiliser les modèles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
3.2 Les différents types de champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
3.3 Arguments à la création des champs. . . . . . . . . . . . . . . . . . . . . . . . . . 147
4
Industrialisez vos développements Python
Django
3.4 Les relations entre les tables et les modèles. . . . . . . . . . . . . . . . . . . . . 149
3.4.1 Relations de type « plusieurs vers un » (n-1 / many-to-one). . 149
3.4.2 Relations de type « plusieurs-vers-plusieurs »
(n-m/many-to-many/m2m) . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
3.4.3 Relations de type « un vers un » (1-1/one-to-one) . . . . . . . . . . 152
3.4.4 Relations entre modèles d’applications différentes . . . . . . . . . 153
3.5 Comment nommer les attributs, noms de champs du modèle ?. . . . 154
3.6 Les options « Meta » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.7 Les autres attributs d’un modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.7.1 Définition de méthodes associées à la classe Model . . . . . . . . 155
3.7.2 Commandes SQL spécifiques . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.7.3 Surcharge de méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4. L’héritage entre modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.1 Les classes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.2 L’héritage utilisant plusieurs tables (Multi-table inheritance). . . . . . 161
4.3 Héritage à l’aide de modèles de procuration/
« proxies » (Proxy models) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
4.4 Héritage multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5. Liste complète des champs et leurs paramètres . . . . . . . . . . . . . . . . . . . . . . 165
5.1 Les champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.2 Options communes à tous les champs . . . . . . . . . . . . . . . . . . . . . . . . 182
6. Écrire vos propres types de champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7. Les options globale, la classe Meta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8. Les managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
8.1 Comment et pourquoi écrire vos propres managers ? . . . . . . . . . . . . 210
8.2 Ajout de méthodes additionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
8.3 Modification des données initiales renvoyées par un manager . . . . . 212
9. Les QuerySet : effectuer des requêtes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
9.1 Créer des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
9.2 Modifier une instance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
9.3 Accéder à une instance/un objet dans la base . . . . . . . . . . . . . . . . . . . 220
9.3.1 Accéder à l’ensemble des objets. . . . . . . . . . . . . . . . . . . . . . . . . 220
9.3.2 Cas particulier : accéder à un objet spécifique . . . . . . . . . . . . . 220
9.3.3 Accéder à des objets spécifiques en effectuant
des recherches ou des tris à l’aide de filtres . . . . . . . . . . . . . . . 221
1 / 24 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !