Your SlideShare is downloading. ×

Chapter1

178

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
178
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Chapitre 1: Introduction à Django=================================Si vous visitez le site Web djangoproject.com en utilisant votre navigateur Web  ou, en fonction de la décennie pendant laquelle vous lisez ce travaildestinéà être intemporel, en utilisant votre natel, votre agenda éléctronique,votrechaussure, ou nimporte quelle machine dévouée (superceding) à Internet  voustrouverez cette explication: Django est un framework Web Python de haut niveau qui encourage le développement rapide et une conception propre et pragmatique.Cette citation est une douce musique   ou un régal pour les yeux, selon quonvousrécite ce livre, que vous le lisiez sur papier ou sur un écran géant.Je vous invite à décomposer ce framework.Django est un framework Web de haut niveau-------------------------------------------Un framework de haut niveau est un logiciel qui réduit la souffrance ressentielors de la construction de sites Web dynamiques. Il abstrait les problèmescourants du dévelopemment Web et fourni des raccourcis pour les tâches deprogrammation fréquentes.Pour plus de clarté, un site Web dynamique est un site dont les pages ne sontpas simplement des documents HTML déposés sur un serveur de fichierquelconque.Dans un site dynamique, chaque page est générée par un logiciel informatique que lon appelle aussi une application Web   que vous créez vous, ledéveloppeur.Une application peut, par exemple, récupérer des informations dune base dedonnées ou gérer les actions basées sur des entrées utilisateur.Un bon framework Web aborde ces différents problèmes: * Il fournit une méthode pour connecter les URLs demandées au code quigère les requêtes. En dautres termes, il vous donne un moyen de choisir quel code est exécuté par telle URL. Pour lexemple, vous pourriez dire au framework « Pour les URL qui ressemblent à /users/joe/, exécute lecode qui affiche le profil de lutilisateur qui a ce nom ». * Il rend facile laffichage, la validation, et le ré-affichage desformulaires HTML. Les formulaires HTML sont la manière basique de récolter lesentrées des utilisateurs du Web. Un framework Web doit rendre leur affichage facile et simplifier la gestion fastidieuse du code daffichage et de ré-affichage (avec les erreurs mises en évidence). * Il convertit les données de lutilisateur dans des structures qui peuvent être manipulées facilement. Par exemple le framework doit convertir les formulaires HTML dans des types de données natives au langage de programmation utilisé. * Il aide à séparer le contenu de la présentation via un système de
  • 2. gabarits (templates), pour que vous puissiez changer lapparence de votre site sans affecter son contenu et vice-versa. * Il sintègre naturellement avec une couche de stockage   comme les basede données   mais ne nécessite pas forcement une base de données. * Il vous permet dêtre plus productif, à un plus haut niveaudabstraction, que si vous deviez travailler directement avec HTTP. Mais il ne vous empêche pas de pouvoir accèder à ces niveaux plus bas si nécessaire. * Il reste en dehors de votre chemin, ne vous obligeant pas à laisser les URL de application se terminer par « .aspx » ou « .php ».Django fait correctement toutes ces choses   et introduit une quantité defonctionnalités qui surpasse ce quun framework Web doit faire.Le framework est écrit en Python, un magnifique langage de programmation,concis, puissant et de haut niveau. Pour développper un site utilisant Django,vous écrivez du code Python qui utilise les bibliothèques Django. Bien que celivre ninclut pas un tutoriel Python complet, il met en lumière lesparticularités et fonctionnalités de Python, aux endroits appropriés,particulièrement quand le code nest pas auto explicatif....qui encourage le développement rapide...-------------------------------------------En dépit des nombreuses fonctionnalités quil propose, un framework Web estsans valeur si il ne vous permet pas de gagner du temps. La philosophie deDjango est de faire tout ce qui peut faciliter un dévelopmment hyper rapide.Avec Django, vous contruisez des sites Web en quelques heures, pas des jours;des semaines ou des années.Ceci est possible en grande partie grâce à Python lui même. Oh, python, commenous laimons, laisse nous faire cette liste:* Python est un langage interprété, ce qui signifie qui ny a pas decompilation de code: Il suffit décrire votre programme et de lexécuter. Endévelopmment Web cela signifie que vous pouvez développer votre code etconstater immédiatement les résultats en appuyant  Recharger  dans votrenavigateur.* Python est typé dynamiquement, ce qui sgnifie que vous navez pas à voussoucier de déclarer le type de donnée de vos variables.* Pyton a une syntaxe concise et expressive, ce qui signifie que cela prendmoins code pour accomplire la même tâche que dans un langage plus verbeuxcomme Java. Une ligne de python équivalent souvent à 10 lignes de Java. (Quidit moins de lignes dit aussi moins de bogues.)* Python offre des fonctionnalités puissante comme lintrospection et la meta-programmation, qui rendent possible dinspecter et dajouter des comportementsaux objets durant la phase dexécution.Derrière les avantages en productivités inhérentes à Python, Django faittous les efforts pour encourager un développement rapide. Chaque partie duframework a été conçu avec comme but la productivité. Nous allons voir desexemples de cela partout dans ce livre.…et une conception propre et pragmatique----------------------------------------
  • 3. Finalement, Django maintient volontairement un design propre partout dans sonpropre code et encourage lapplication des meilleurs pratiques de développementWeb dans les applications que vous créez.Cela signifie que si Django était une voiture, il serait une élégante voiturede sport, capable non seulement datteindre des vitesses élevées et de tournersec, mais aussi daller loin en ayant des émissions propres.La philosophie est la suivante: avec Django il est facile de faire les choses dela  bonne  manière.Spécificement, Django encourage le faible couplage: les différentes pièces delapplication doivent être interchangeables et soivent communiquer entre ellesvia des API claires et concises.Par exemple, le système de template ne sait rien du système de base dedonnées, qui ne connait rien de la couche requète/réponse, qui ne sais riendu cache. Chacune de ces couches est séparée et faiblement couplée Ãlensemble. En pratique cela signifie que vous pouvez mélanger et choisir lescouches si besoin est.Django suit larchitecture "Modèle-Vue-Contrôleur" (MVC). En bref, il sagitdune manière de développper du logiciel afin que le code définissant etaccédant aux données (le Modèle) soit séparé de la logique métier (leContrôleur), qui est à son tour séparé de linterface utilisateur (la Vue).MVC est mieux expliqué par un exemple de ce quil ne faut pas faire. Regardezle code PHP suivant: il va chercher une liste de personnes depuis une base dedonnées MySQL et affiche cette liste dans une page HTML simple. (Oui, noussavons que les progammeurs disciplinés peuvent écrire du code PHP propre; nousutilisons juste PHP pour illustrer notre argumentation.)::<html><head><title>Friends of mine</title></head><body><h1>Friends of mine</h1><ul><?php$connection = @mysql_connect("localhost", "my_username", "my_pass");mysql_select_db("my_database");$people = mysql_query("SELECT name, age FROM friends");while ( $person = mysql_fetch_array($people, MYSQL_ASSOC) ) {?><li><?php echo $person[name] ?> is <?php echo $person[age] ?> years old.</li><?php } ?></ul></body></html>Bien que ce code soit conceptuellement simple pour les novices   car tout estcontenu dans un seul fichier   cest une mauvaise pratique pour plusieursraisons:* La présentation est lié au code. Si un graphiste désire modifier cette pageHTML, il ou elle devra modifier ce code, car HTML et PHP sont entrelacé. Parcontraste, lapproche MVC de Django encourage la séparation du code et de la
  • 4. présentation. Ainsi la présentation est gouvernée par des gabarits(Templates) et la logique métier vit dans des modules Python. Les programmeurstravail avec du code, et les designers avec HTML.* Le code de la base de données est lié avec la logique métier. Cest unproblème de redondance: Si vous renommer votre base de données ou sescolonnes, vous devrez réécrire votre SQL.* Par contraste, lapproche MVC de Django encourage une seule couche abstraitedaccès aux données qui est responsable de tout accès aux données. Dans lecas de Django, la couche daccès aux données connais le nom vos tables et devos colonnes et vous laisse ainsi exécuter les requètes SQL via Python au lieudécrire du SQL manuellement. Cela signifie que si les noms de vos tableschangent, vos devrez les changer dans un seul endroit   dans la définition devotre modèle   au lieu de le faire à travers tout votre code pour chaqueinstruction SQL.* LURL est couplé au code. Si ce fichier PHP existe comme /foo/index.php, ilsera exécuté pour chaque requète à cette adresse. Mais si ce que vous voulezque ce code soit exécuté pour les requètes /bar/ et /baz/? Vous devrez mettreen place des inclusions ou des règles de ré-écriture, qui deviendrontrapidemment ingérables.Par contrate, Django découple les URLs du code de réponse afin que vouspuissiez changer les URL pour un morceau de code donné.* Les paramètres de connexion à la base de donnés sont codés en dur. Cestmalpropre de spécifier des informations de connexion   le serveur, le nomdutilisateur et le mot de passe   dans le code car il sagit de configurationet non de logique de programmation. En outre, cet exemple code en dur le faitque la base de données utilisée est MySQL.Par contraste, Django a une place unique pour stocker la configuration. Lacouche daccès aux données est abstraite de tel manière quil soit facile dechanger de serveur de base de données (par exemple: de MySQL à PostgreSQL).Ce que Django ne fait pas-------------------------Bien sûr, nous voulons que ce livre soit juste et équilibré. Aillant ceci entête, nous devrions être honnête sur ce que Django ne fait pas:* Nourrir votre chat* Lire les besoins de votre projet dans votre esprit et les implanter dunefaçon soigeusement planifiée afin de faire croire à votre patron que vousnêtes pas chez vous en train de regarder "Le Juste Prix".* Un peu plus sérieusement, Django ninverse pas leffet du réchauffementglobal.Dans quel but Django a-t-il été développéDjango est profondémment enraciné dans les problèmes et les solutions dumonde réel. Il ne pas fut créé pour être commercialisé et vendu auxdéveloppeurs. Il ne fut pas non plus créé comme un exercice académiqueélaboré durant le temps libre dun hobbiste. Il fut construit dès le premierjour pour résoudre les problèmes courants dune équipe de développement Webprofessionel.Il commença fin 2003, pour le journal dune petite ville du Kansas: Lawrence.Pour une raison ou pour une autre, Le journal "The Lawrence Journal-World" estparvenu à attirer une poignée de talentueux designers et développeurs Web audébut des années 2000. Le groupe de travail Web du journal, World Online,devint rapidemment lun des plus innovant groupe de travail journalistique Web
  • 5. dans le monde. Ces trois principaux sites, LJWorld.com (nouvelles), Lawrence.com(divertisement/musique), et KUsports.com (sports junior), commencèrent Ãgagner récompense après récompense dans lindustrie du journalisme. Cesinnovations furent nombreuses, par exemple:* Le site de divertissement le plus localement impliqué à travers le monde,Lawrence.com, qui mélange les données et les évènements locaux, les groupes,les restaurants, les "drink" speciaux, des chansons téléchargeables et desnouvelles au format standard (traditional-format).* Une section de LJWorld.com qui a traité les petis joueurs locaux comme si ilétaient les "New York Yankees"   leur fournissant à chacun une pagepersonnel liée aux données météorologiques pour afficher des prévisions desjeux, fournissant un panorama à 360° pour chaque terrain de jeu à proximitéet alertant les parents via SMS quand les jeux sont annulés.* Des alertes SMS pour les match de basketball et de football de luniversitédu Kansas, qui permet aux fans de modifier les scores et les statistiques durantle jeu, et un second système qui utilise des algorithme dintelligenceartificielle pour laisser les fans envoyer des textes complet au système debase de donnés ("Combien de points giddens a ?" ou "points gidden")* Une base de données détaillée des statistiques de tous les matches defootball et de basketball du collègue dont vous auriez besoin, inculant unmoyen de comparer deux/plusieurs joueurs ou équipes dans le NCAA (NationalCollegiate Athletic Association).* Fournir des blogs aux membres de la communauté en mettant en évidence letravail décriture de cette communautée   les blogs étaient tendance Ãlépoque.Les experts en journalisme à travers le monde designèrent World Online commeun exemple du journalisme du futur. Le New York Times publia une histoire delentreprise à la première page de la section business; la radio publiquenationale fit une série de deux jours à ce sujet. Rob Curley, Le rédacteur enchef de World Online, parla presque toutes les semaines dans des conférencesjournalistique à travers le monde, présentant les idées innovantes de WorldOnline et les fonctionnalités du site. Dans une industrie morne et démodée,résistante aux changements, World online faisait office dexception rare.Le succès de World Online doit beaucoup au technologies derrière ses sites, età la philosophie que les programmeurs sont aussi important dans la créationjournalistique de qualité au 21ème siècle que les journalistes eux-même.Cest pourquoi Django fut développé: les développeurs de World Online avaientbesoin de développer facilement des sites Web complexes basés sur des bases dedonnées.Fin 2003, les deux développeurs de World Online, Adrian Holovaty et SimonWillison, décidèrent de créer un framwork. Ils choisirent dutiliser Python,un langage dont ils étaient récemment tombé amoureux. Après avoir exploré(est être déçu) les bibliothèques de programmation Web disponibles, ilscommencèrent à créer Django.Deux ans plus tard, durant lété 2005, après avoir développé Djangojusquà un point où il était utilisé efficacement par la plupart des sitesde World Online, léquipe de World Oline, qui incluait maintenant Jacob Kaplan-Moss, decida que ça serait une bonne idée de rendre le framework open source.De cette manière, ils participraient à la communauté, recevraient desaméliorations gratuites de développeurs externes, et généreraient du bruitpour leurs CMS commercial, Elligton (http://www.ellingtoncms.com/). Django futouvert à la communauté en juillet 2005 et devint rapidemment populaire. Bienque Django soit maintenant un projet open source avec des contributeurs Ãtravers le monde, les développeurs originaux de World Online continuent Ã
  • 6. fournir une direction pour le développement du framework, et World Onlinecontribue à dautre aspects en fournissant du temps, du matérial marketing, dela bande passante et de lhébérgement pour le site du framework(http://www.djangoproject.com/).Qui utilise Django?-------------------Les développeurs Web à travers le monde utilisent Django. Quelques exemplesspécifiques:* World Online, bien sur, continue dutiliser Django pour tous ces sites Web,aussi bien en interne que pour ces clients commerciaux. Quelques un des sitesDjango sont: * http://www.ljworld.com/ * http://www.lawrence.com/ * http://www.6newslawrence.com/ * http://www.visitlawrence.com/ * http://www.lawrencechamber.com/ * http://www2.kusports.com/stats/* Le site du Washington Post, washingtonpost.com, utilise Django pour cesprojets de base de données et pour des parties variées de fonctionnalitésdun bout à lautre du site. Quelques exemples:* La base données du congret U.S., http://projects.washingtonpost.com/congress/* Lannuaire du personnel et des fonctions qui laisse des lecteurs contacter desjournalistes, apparaissant comme liens sur la plupart des articles.* Les visages des tués: http://projects.washingtonpost.com/fallen/* Chicagocrime.org, une base de données des crimes constatés dans Chicagolibrement naviguable et une des première application composite utilisant GoogleMaps, fut développée avec Django.* Tabblo.com, un site de partage de photo innovant, utilisant Django. Le sitevous laisse mettre ensembles des photos pour créer des pages qui raconte deshistroires.* Texasgigs.com, un site de musique locale, Texas, fut écrit avec Django.* Grono.net un site polonais de réseautage social, commenca en remplacant sontcode Java avec Django. Ils trouvèrent non seulement quil est plus rapide (etplus amusant) de développer en Django mais également que les performancesétaient meilleures en utilisant moins de matériel.* Traincheck.com fut développé en Django. Le site vous laisse envoyer des SMSafin dobtenir les horraires de train pour votre emplacement actuel.Une liste à jour de dizaines de sites qui utilisent Django est disponible ici:http://code.djangoproject.com/wiki/DjangoPoweredSitesAbout this book---------------Le but de ce livre est dexpliquer toutes les choses que Django fait et de fairede vous un expert à son utilisation.En lisant ce livre, vous allez apprendre la qualifications nécessaires pourdévelopper rapidemment de puissants sites Web, avec du code propre et facile Ãmaintenir.

×