Cet ouvrage et des milliers d'autres font partie de la bibliothèque YouScribe
Obtenez un accès à la bibliothèque pour les lire en ligne
On lit avec un ordinateur, une tablette ou son smartphone (streaming)
En savoir plus
ou
Achetez pour : 24,99 €

Lecture en ligne + Téléchargement

Format(s) : EPUB - PDF

sans DRM

Partagez cette publication

Publications similaires

Flex 3

de editions-eyrolles

Best practices PHP 5

de editions-eyrolles

Programmation GWT 2

de editions-eyrolles

Vous aimerez aussi

Pokémon GO 100% non officiel

de editions-eyrolles

J'arrête la malbouffe !

de editions-eyrolles

Le pouvoir des gentils

de editions-eyrolles

suivant
Django avancé
Pour des applications web puissantes en Python
Y o h a n n G a b o r y
Préface de Nicolas Ferrari Avec la contribution de Thomas Petillon
Django avancé
Django, framework Python MVC réputé pour son élégance et sa puissance, permet de développer des applications web de qualité professionnelle extrêmement riches et dynamiques en un temps record – pour peu que le développeur fasse l’effort de conception nécessaire et tire parti de son modèle de développement et de son écosystème.
Gagnez en expertise sur le framework de développement web le plus ambitieux ! Au fil de deux études de cas (un tracker et un agenda partagé) menées de bout en bout, cet ouvrage expose les fondamentaux de Django que sont les les vues, les templates, les formulaires et les modèles. Par sa présentation détaillée de l’architecture et des fonctionnalités de Django, cet ouvrage permet au développeur, aguerri comme débutant, d’atteindre une connaissance intime du framework. Riche en exemples concrets et en astuces utiles, l’ouvrage distille également de nombreuses bonnes pratiques issues de l’expérience professionnelle de l’auteur. Il constitue pour le développeur Django le complément avancé indispensable à la documentation existante.
Au sommaire Bien démarrer avec DjangoInstaller l’environnement de travailInitialiser un projetCréer sa première application Django 1.5Un trackerMéthode et frameworkMise en place du projetSettings et configuration de la base de données (syncdb) et des applicationsURL, application dynamique, objet ticketInterfaces d’administration et client Des bases à la productionCréer un agenda partagéOrganisation du projet : modèles et tablesMigrationsGestion de l’authentificationTemplate loginFormulaireTests unitairesCréation d’un événementModelFormContraintesFormulaire intelligentInterface CRUDTemplates pour l’affichageIntégration avec CSS et JavaScript OrganisationInclure un framework CSSVues génériquespour les fonctions d’agendaCollection d’événementsPaginationDétails d’un événementRevue de l’application et factorisation du codeVue Evenement_Detail : factorisation du formulaire et URL DRYCréer, modifier, supprimer des événementsPartageGérer la liste d’utilisateurs connectés : modèles, invitations, vuesRelier les applications Calendrier et Agenda : gestion des participants et des statutsBases de donnéesChoisir sa base de donnéesDjango et le NoSQLORMTypes de champsRelationsHéritagesMéthodes des modèlesQuerysetsManagersObjet QTraitement de l’information : les vuesWorkflow, middlewares, objets request et response, compilation du template, les context processorsVues génériquesVues classesvsvues fonctionsAffichage de l’information : les templatesLangageBonnes pratiques d’organisationTags et filtresDialogue avec l’utilisateur : les formulairesObjet FormOptions des champsDjango et le protocole webGET, POST et RESTMise en place d’une API REST complèteContribsSécurisation OAuthModules admin, content-types, sitemaps, syndication…Django avancéSurclasser l’application adminVues : générer modèles et URL à la voléeUtiliser Django en dehors de Django.
À qui s’adresse ce livre ? – À tous les développeurs web (PHP, Java, Python, etc.) qui souhaitent recourir à un framework puissant pour des applications professionnelles ; – Aux développeurs Django souhaitant aller plus loin dans leur maîtrise du framework.
Y. Gabory Yohann Gaboryest développeur web au sein d’Outscale et spécialiste de solutions Python/Django. Développeur Python depuis 7 ans, il a pratiqué d’autres framework tels que Ruby on Rails et Turbogears et a à son actif des références prestigieuses, telles que Libération et l’AFDAS. Il participe à des conférences Django et fut par ailleurs spécialisé en réseaux sociaux chez PilotSystems : protocole d’authentification Oauth, gestion d’identité OpenID, intégration Facebook, Twitter, Google Market Place... Il est aujourd’hui en charge du développement des interfaces de gestion ducloudOutscale.
Avec la contribution de Thomas Petillon
Django avancé
Pour des applications webpuissantes en Python
Développement web et mobile R.rimelé. –HTML5.o e N 13638, 2 édition, 2013, 752 pages.
Chezlemêmeéditeur
F.draillard. –Premiers pas en CSS3 et HTML5.o N 13689, 2013, 472 pages.
R.Goetter. –CSS avancées.o e N 13405, 2 édition, 2010, 385 pages.
R.Goetter. –CSS 2 : pratique du design web.o e N 12461, 3 édition, 2009, 340 pages.
R.rimelé. –Mémento HTML5.o N 13420, 2012, 14 pages.
R.Goetter. –Mémento CSS 3.o e N 13665, 2 édition, 2013, 14 pages.
É.daspetet C.pierredeGeyer. –PHP 5 avancé.o e N 13435, 6 édition, 2012, 870 pages.
Design web et ergonomie A.BouCher. –Ergonomie web. o e N 13215, 3 édition, 2011, 356 pages.
A.BouCher. –Ergonomie web illustrée. o N 12695, 2010, 336 pages.
A.BouCher. –Mémento Ergonomie web. o e N 13735, 3 édition, 2013, 14 pages.
E.sloïm. –Mémento Sites web.o e N 12802, 3 édition, 2010, 14 pages.
O.andrieu. –Réussir son référencement Web.o N 13664, 2013, 552 pages.
F.mattatia. –Traitement des données personnelles.o N 13594, 2013, 188 pages.
Autres ouvrages F.mattatia. –Traitement des données personnelles.o N 13594, 2013, 188 pages.
C.porteneuve. –Bien développer pour le Web 2.0.o e N 12391, 2 édition, 2008, 674 pages.
F.daoust, D.hazaëlmassieux. –Bonnes pratiques pour le Web mobile. o N 12828, 2011, 300 pages.
T.Baillet. –Créer son thème WordPress mobile.o N 13441, 2012, 128 pages.
É.sarrion. –XHTML/CSS et JavaScript pour le web mobile.o N 12775, 2010, 274 pages.
É.sarrion. –jQuery Mobile.o N 13388, 2012, 601 pages.
P. Y.Chatelier. –ObjectiveC pour le développeur avancé.o e N 13686, 2 édition, 2013, 242 pages.
K.mCGrane. –Stratégie de contenu mobile.o N 13675, 2013, 172 pages.
C.sChillinGer. –Intégration web : Les bonnes pratiques.o N 13370, 2012, 390 pages.
I.Canivetet JM.hardy. –La stratégie de contenu en pratique. o N 13510, 2012, 176 pages.
A.altinier. –Accessibilité web.o N 12889, 2012, 332 pages.
J.ButtiGieG. –Mémento WordPress, programmation.o N 13596, 2012, 18 pages.
R. M.stallman, S.Williamset C.masutti. –Richard Stallman et la révolution du logiciel libre.o e N 13635, 2 édition, 2013, 338 pages.
Django avancé
Pour des applications webpuissantes en Python
Y o h a n n G a b o r y
Préface de Nicolas Ferrari Avec la contribution de Thomas Petillon
ÉDITIONS EYROLLES 61, bd SaintGermain 75240 Paris Cedex 05 www.editionseyrolles.com
Remerciements à omas Petillon et Anne Bougnoux pour leurs contributions précieuses.
En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support que ce soit, sans l’autorisation de l’Éditeur ou du Centre Français d’exploitation du droit de copie, 20, rue des Grands Augustins, 75006 Paris. © Groupe Eyrolles, 2013, ISBN : 9782212134155
Préface
En quinze ans, les techniques de développement web ont beaucoup évolué. J’ai fait mes premiers pas sur Internet au milieu des années 1990 – après la récente introduc tion de PHP en 1994. Tout était prétexte à la création d’un site, à la fois pour nourrir la curiosité du développeur, mais aussi pour jouir d’une présence en ligne aux yeux de tous, et par delà les frontières. C’était une période de découvertes : on faisait tout au sein d’un même script, qu’il s’agisse d’interagir avec des bases de données, d’effectuer des traitements ou de générer un affichage HTML. Il n’existait alors pas de biblio thèques pour faciliter le développement, à l’exception de quelques frameworks assez lourds dont la prise en main était complexe si l’on était en phase d’apprentissage.
Ce n’est que plus tard, lors de la « bulle Internet » à partir de la fin des années 1990, qu’est arrivée une première vague de frameworks web formalisant, entre autres, un ensemble de patterns de développement permettant d’organiser le code de façon intéressante. Citons le fameux pattern MVC (ModèleVueContrôleur) qui propose de séparer clairement les données de leur traitement, et de leur affichage.
Fort de ces différents outils et ressources, le développement web s’est encore enrichi à partir de 2005, avec l’introduction de frameworks modernes construits sur des tech nologies récentes (Ruby on Rails, développé en Ruby) ou en pleine renaissance (Django, développé en Python). C’est d’ailleurs dans ce contexte que nous avons créé en 2006, avec mon ami Cyril, notre plateforme d’hébergementalwaysdata.com, faite par et pour les développeurs, avec comme ligne directrice la prise en charge d’un maximum de technologies web.
En quelques années, Django a mûri : non seulement techniquement, puisque après une dizaine de versions antérieures, la version 1.5 devrait enfin voir le jour, mais aussi humainement, puisque sa communauté s’est étoffée avec l’organisation régulière de conférences en France et dans le monde. Django a désormais fait ses preuves dans le secteur du développement web, comme en témoignent de nombreuses applications : Disqus (la plus grosse plateforme de gestion de commentaires), Instagram (rachetée
VI
Django avancé
par Facebook), Pinterest, Mozilla Foundation, Libération, 20 minutes, Washington Post, Century 21, National Geographic – pour n’en citer que quelquesunes. Cet ouvrage vient en renfort d’une documentation officielle en ligne déjà fort bien faite, tant pour les novices que pour les utilisateurs chevronnés de Django. Son auteur, Yohann, a également voulu démocratiser plus encore son framework de pré dilection. Ainsi Yohann s’est affirmé en véritable « évangéliste » en mettant son expé rience et ses compétences au service de ce livre. Passionné par Django depuis plus de six ans, sa participation à l’émancipation du framework l’a amené non seulement à réaliser de nombreux développements, mais aussi à donner des formations, des con férences et écrire des publications. Son approche pour faire découvrir Django est très didactique : après une introduc tion sur la technologie et la démarche entreprise, il propose d’emblée d’entrer dans le vif du sujet en parcourant un spectre très large des fonctionnalités offertes par le fra mework, et ce, au fil du développement d’une application de A à Z. Vous disposez ainsi, avec ce livre, d’un des tutoriels les plus complets existant à ce jour sur Django. À l’issue de votre lecture, nul doute que vous aurez acquis les notions nécessaires au développement de votre prochaine application. En espérant que cette lecture fasse naître des idées, je vous laisse entre les mains de Yohann et, pourquoi pas, sur un fond sonore de Jazz manouche...
Nicolas Ferrari Développeur Django et cofondateur d’alwaysdata.com
Table des matières
Avantpropos ................................................................................. 1 Pourquoi ce livre ?1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . À qui s’adresse le livre ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Comment ce livre estil organisé ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Remerciements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
CHAPITRE1 Bien démarrer avec Django : installation et initialisation d’un projet...................................... 5 Installer un bon environnement de travail. . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . Choisir entre éditeur de texte et EDI. . . . . . . . . 5. . . . . . . . . . . . . . . . . . . . . . . Installer Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Installation sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Installation sous Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Installer pip et virtualenv8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Installation sous Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Installation sous Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Installation sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Installer un gestionnaire de versions9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les différents systèmes de gestion de versions. . . . . . . . . . . . . . . . . . . . . . . . . . .10 Installer un gestionnaire de versions : le choix Mercurial . . . . . . . . . . . . . . . . .11 Installer et tester Django. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Initialiser un projet. . . . . . . . . . . . . . . . . . . . . 13. . . . . . . . . . . . . . . . . . . . . . . . . . . Un projet, des applications. . . . . . . . . . . . . . . . . . . . . . . . 13. . . . . . . . . . . . . . . Les commandes d’initialisation d’un projet. . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Création d’un projet : startproject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Serveur web de développement : runserver . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Conclusion. . . . . . . . . . . . . . . . . . . 16. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VIII
Django avancé
CHAPITRE2 Créer sa première application : un tracker................................ 19 De la méthode et un framework adaptable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Le développement par itérations20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un framework transparent et adaptable21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . De l’utilité d’un tracker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Organisation du travail21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gestion du temps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Gestion des jalons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Historique22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tracker et gestionnaire de versions : les outils d’une méthode « agile »22. . . . . . . Initialisation du projet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Mise en place23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Création d’une application : startapp23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vue d’ensemble du projet23. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paramétrer les variables d’environnement (settings). . . . . . . . . . . . . . . . . . . . . 24 Mode de développement (DEBUG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 Configuration de la base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Applications installées par défaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Initialisation de la base de données : syncdb. . . . . . . . . . . . . . . . . . . . . 28. . . . . Projet versus application29. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration des applications installées29. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les URL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Une première vue32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . L’objet request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 L’objet HttpResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Créer une application dynamique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Le modèle de l’objet ticket39. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La classe Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 La commande python manage.py shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 Première itération : l’interface d’administration. . . . . . . . . . . . . . . . . . . . . . . . . . 43 Ajouter l’application aux settings. . . . . . . . . . . . . . . . . . . . . . . . . . . 43. . . . . . . Ajouter l’application aux URL. . . . . . . 44. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un premier test. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Ajouter le modèle Task à l’administration. . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Une interface CRUD46. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Un premier aperçu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46 Comment sont créées les URL de l’administration ? . . . . . . . . . . . . . . . . . . . . .47 Les formulaires de l’administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Modifier l’interface d’administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47