SlideShare une entreprise Scribd logo
1  sur  6
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 travail
destiné
à être intemporel, en utilisant votre natel, votre agenda éléctronique,
votre
chaussure, ou n'importe quelle machine dévouée (superceding) à Internet  
vous
trouverez 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 qu'on
vous
ré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 ressentie
lors de la construction de sites Web dynamiques. Il abstrait les problèmes
courants du dévelopemment Web et fourni des raccourcis pour les tâches de
programmation fréquentes.

Pour plus de clarté, un site Web dynamique est un site dont les pages ne sont
pas simplement des documents HTML déposés sur un serveur de fichier
quelconque.
Dans un site dynamique, chaque page est générée par un logiciel informatique
 
que l'on appelle aussi une application Web   que vous créez vous, le
développeur.
Une application peut, par exemple, récupérer des informations d'une base de
donné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 qui
gère
       les requêtes. En d'autres termes, il vous donne un moyen de choisir quel
       code est exécuté par telle URL. Pour l'exemple, vous pourriez dire au
       framework « Pour les URL qui ressemblent à /users/joe/, exécute le
code
       qui affiche le profil de l'utilisateur qui a ce nom ».

    * Il rend facile l'affichage, la validation, et le ré-affichage des
formulaires
      HTML. Les formulaires HTML sont la manière basique de récolter les
entrées
      des utilisateurs du Web. Un framework Web doit rendre leur affichage
      facile et simplifier la gestion fastidieuse du code d'affichage et de
      ré-affichage (avec les erreurs mises en évidence).

    * Il convertit les données de l'utilisateur 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
gabarits
      (templates), pour que vous puissiez changer l'apparence de votre site sans

       affecter son contenu et vice-versa.

     * Il s'intègre naturellement avec une couche de stockage   comme les base
de
       données   mais ne nécessite pas forcement une base de données.

    * Il vous permet d'être plus productif, à un plus haut niveau
d'abstraction,
      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é de
fonctionnalités qui surpasse ce qu'un 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 ce
livre n'inclut pas un tutoriel Python complet, il met en lumière les
particularités et fonctionnalités de Python, aux endroits appropriés,
particulièrement quand le code n'est pas auto explicatif.

...qui encourage le développement rapide...
-------------------------------------------

En dépit des nombreuses fonctionnalités qu'il propose, un framework Web est
sans valeur si il ne vous permet pas de gagner du temps. La philosophie de
Django 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, comme
nous l'aimons, laisse nous faire cette liste:

* Python est un langage interprété, ce qui signifie qui n'y a pas de
compilation de code: Il suffit d'écrire votre programme et de l'exécuter. En
dévelopmment Web cela signifie que vous pouvez développer votre code et
constater immédiatement les résultats en appuyant  Recharger  dans votre
navigateur.

* Python est typé dynamiquement, ce qui sgnifie que vous n'avez pas à  vous
soucier de déclarer le type de donnée de vos variables.

* Pyton a une syntaxe concise et expressive, ce qui signifie que cela prend
moins code pour accomplire la même tâche que dans un langage plus verbeux
comme Java. Une ligne de python équivalent souvent à 10 lignes de Java. (Qui
dit moins de lignes dit aussi moins de bogues.)

* Python offre des fonctionnalités puissante comme l'introspection et la meta-
programmation, qui rendent possible d'inspecter et d'ajouter des comportements
aux objets durant la phase d'exécution.

Derrière les avantages en productivités inhérentes à Python, Django fait
tous les efforts pour encourager un développement rapide. Chaque partie du
framework a été conçu avec comme but la productivité. Nous allons voir des
exemples de cela partout dans ce livre.

…et une conception propre et pragmatique
----------------------------------------
Finalement, Django maintient volontairement un design propre partout dans son
propre code et encourage l'application des meilleurs pratiques de développement
Web dans les applications que vous créez.

Cela signifie que si Django était une voiture, il serait une élégante voiture
de sport, capable non seulement d'atteindre des vitesses élevées et de tourner
sec, mais aussi d'aller loin en ayant des émissions propres.

La philosophie est la suivante: avec Django il est facile de faire les choses de
la  bonne  manière.

Spécificement, Django encourage le faible couplage: les différentes pièces de
l'application doivent être interchangeables et soivent communiquer entre elles
via des API claires et concises.

Par exemple, le système de template ne sait rien du système de base de
données, qui ne connait rien de la couche requète/réponse, qui ne sais rien
du cache. Chacune de ces couches est séparée et faiblement couplée Ã
l'ensemble. En pratique cela signifie que vous pouvez mélanger et choisir les
couches si besoin est.

Django suit l'architecture "Modèle-Vue-Contrôleur" (MVC). En bref, il s'agit
d'une manière de développper du logiciel afin que le code définissant et
accédant aux données (le Modèle) soit séparé de la logique métier (le
Contrôleur), qui est à son tour séparé de l'interface utilisateur (la Vue).

MVC est mieux expliqué par un exemple de ce qu'il ne faut pas faire. Regardez
le code PHP suivant: il va chercher une liste de personnes depuis une base de
données MySQL et affiche cette liste dans une page HTML simple. (Oui, nous
savons que les progammeurs disciplinés peuvent écrire du code PHP propre; nous
utilisons 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 est
contenu dans un seul fichier   c'est une mauvaise pratique pour plusieurs
raisons:

* La présentation est lié au code. Si un graphiste désire modifier cette page
HTML, il ou elle devra modifier ce code, car HTML et PHP sont entrelacé. Par
contraste, l'approche MVC de Django encourage la séparation du code et de la
présentation. Ainsi la présentation est gouvernée par des gabarits
(Templates) et la logique métier vit dans des modules Python. Les programmeurs
travail avec du code, et les designers avec HTML.

* Le code de la base de données est lié avec la logique métier. C'est un
problème de redondance: Si vous renommer votre base de données ou ses
colonnes, vous devrez réécrire votre SQL.

* Par contraste, l'approche MVC de Django encourage une seule couche abstraite
d'accès aux données qui est responsable de tout accès aux données. Dans le
cas de Django, la couche d'accès aux données connais le nom vos tables et de
vos colonnes et vous laisse ainsi exécuter les requètes SQL via Python au lieu
d'écrire du SQL manuellement. Cela signifie que si les noms de vos tables
changent, vos devrez les changer dans un seul endroit   dans la définition de
votre modèle   au lieu de le faire à travers tout votre code pour chaque
instruction SQL.

* L'URL est couplé au code. Si ce fichier PHP existe comme /foo/index.php, il
sera exécuté pour chaque requète à cette adresse. Mais si ce que vous voulez
que ce code soit exécuté pour les requètes /bar/ et /baz/? Vous devrez mettre
en place des inclusions ou des règles de ré-écriture, qui deviendront
rapidemment ingérables.
Par contrate, Django découple les URLs du code de réponse afin que vous
puissiez changer les URL pour un morceau de code donné.

* Les paramètres de connexion à la base de donnés sont codés en dur. C'est
malpropre de spécifier des informations de connexion   le serveur, le nom
d'utilisateur et le mot de passe   dans le code car il s'agit de configuration
et non de logique de programmation. En outre, cet exemple code en dur le fait
que la base de données utilisée est MySQL.
Par contraste, Django a une place unique pour stocker la configuration. La
couche d'accès aux données est abstraite de tel manière qu'il soit facile de
changer 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 en
tê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 d'une
façon soigeusement planifiée afin de faire croire à votre patron que vous
n'êtes pas chez vous en train de regarder "Le Juste Prix".

* Un peu plus sérieusement, Django n'inverse pas l'effet du réchauffement
global.

Dans quel but Django a-t-il été développé

Django est profondémment enraciné dans les problèmes et les solutions du
monde réel. Il ne pas fut créé pour être commercialisé et vendu aux
développeurs. Il ne fut pas non plus créé comme un exercice académique
élaboré durant le temps libre d'un hobbiste. Il fut construit dès le premier
jour pour résoudre les problèmes courants d'une équipe de développement Web
professionel.

Il commença fin 2003, pour le journal d'une petite ville du Kansas: Lawrence.

Pour une raison ou   pour une autre, Le journal "The Lawrence Journal-World" est
parvenu à attirer    une poignée de talentueux designers et développeurs Web au
début des années   2000. Le groupe de travail Web du journal, World Online,
devint rapidemment   l'un des plus innovant groupe de travail journalistique Web
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 l'industrie du journalisme. Ces
innovations 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 des
nouvelles 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 page
personnel liée aux données météorologiques pour afficher des prévisions des
jeux, 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 l'université
du Kansas, qui permet aux fans de modifier les scores et les statistiques durant
le jeu, et un second système qui utilise des algorithme d'intelligence
artificielle pour laisser les fans envoyer des textes complet au système de
base 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 de
football et de basketball du collègue dont vous auriez besoin, inculant un
moyen de comparer deux/plusieurs joueurs ou équipes dans le NCAA (National
Collegiate Athletic Association).

* Fournir des blogs aux membres de la communauté en mettant en évidence le
travail d'écriture de cette communautée   les blogs étaient tendance Ã
l'époque.

Les experts en journalisme à travers le monde designèrent World Online comme
un exemple du journalisme du futur. Le New York Times publia une histoire de
l'entreprise à la première page de la section business; la radio publique
nationale fit une série de deux jours à ce sujet. Rob Curley, Le rédacteur en
chef de World Online, parla presque toutes les semaines dans des conférences
journalistique à travers le monde, présentant les idées innovantes de World
Online et les fonctionnalités du site. Dans une industrie morne et démodée,
résistante aux changements, World online faisait office d'exception 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éation
journalistique de qualité au 21ème siècle que les journalistes eux-même.

C'est pourquoi Django fut développé: les développeurs de World Online avaient
besoin de développer facilement des sites Web complexes basés sur des bases de
données.

Fin 2003, les deux développeurs de World Online, Adrian Holovaty et Simon
Willison, décidèrent de créer un framwork. Ils choisirent d'utiliser 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, ils
commencèrent à créer Django.

Deux ans plus tard, durant l'été 2005, après avoir développé Django
jusqu'à un point où il était utilisé efficacement par la plupart des sites
de 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 des
améliorations gratuites de développeurs externes, et généreraient du bruit
pour leurs CMS commercial, Elligton (http://www.ellingtoncms.com/). Django fut
ouvert à la communauté en juillet 2005 et devint rapidemment populaire. Bien
que Django soit maintenant un projet open source avec des contributeurs Ã
travers le monde, les développeurs originaux de World Online continuent Ã
fournir une direction pour le développement du framework, et World Online
contribue à d'autre aspects en fournissant du temps, du matérial marketing, de
la bande passante et de l'hébérgement pour le site du framework
(http://www.djangoproject.com/).

Qui utilise Django?
-------------------

Les développeurs Web à   travers le monde utilisent Django. Quelques exemples
spécifiques:

* World Online, bien sur, continue d'utiliser Django pour tous ces sites Web,
aussi bien en interne que pour ces clients commerciaux. Quelques un des sites
Django 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 ces
projets de base de données et pour des parties variées de fonctionnalités
d'un bout à l'autre du site. Quelques exemples:

* La base données du congret U.S., http://projects.washingtonpost.com/congress/
* L'annuaire du personnel et des fonctions qui laisse des lecteurs contacter des
journalistes, 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 Chicago
librement naviguable et une des première application composite utilisant Google
Maps, fut développée avec Django.
* Tabblo.com, un site de partage de photo innovant, utilisant Django. Le site
vous laisse mettre ensembles des photos pour créer des pages qui raconte des
histroires.
* Texasgigs.com, un site de musique locale, Texas, fut écrit avec Django.
* Grono.net un site polonais de réseautage social, commenca en remplacant sont
code Java avec Django. Ils trouvèrent non seulement qu'il est plus rapide (et
plus 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 SMS
afin d'obtenir 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/DjangoPoweredSites

About this book
---------------

Le but de ce livre est d'expliquer toutes les choses que Django fait et de faire
de vous un expert à son utilisation.

En lisant ce livre, vous allez apprendre la qualifications nécessaires pour
développer rapidemment de puissants sites Web, avec du code propre et facile Ã
maintenir.

Contenu connexe

En vedette

Possible Lair - Capri Restaurant
Possible Lair - Capri RestaurantPossible Lair - Capri Restaurant
Possible Lair - Capri Restaurantguest371330d
 
Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...
Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...
Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...JUAN AGUILAR
 
Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...
Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...
Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...AT Internet
 
Talleres Vivenciales de Me Haces la Taba Dic13
Talleres Vivenciales de Me Haces la Taba Dic13Talleres Vivenciales de Me Haces la Taba Dic13
Talleres Vivenciales de Me Haces la Taba Dic13Luis Palomino
 
Paris : projet de Damineh et Alba, de 6e
Paris : projet de Damineh et Alba, de 6eParis : projet de Damineh et Alba, de 6e
Paris : projet de Damineh et Alba, de 6eBarretMonteOroel
 
¿Cómo son las revistas científicas españolas en WoS y Scopus?
¿Cómo son las revistas científicas españolas en WoS y Scopus?¿Cómo son las revistas científicas españolas en WoS y Scopus?
¿Cómo son las revistas científicas españolas en WoS y Scopus?Ernest Abadal
 
Weekly actions du 12 au 16 avril 2010‏
Weekly actions du 12 au 16 avril 2010‏Weekly actions du 12 au 16 avril 2010‏
Weekly actions du 12 au 16 avril 2010‏Cherradi -
 
3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuel3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuelSmartelia
 
PUBLICIDAD.Ppt
PUBLICIDAD.PptPUBLICIDAD.Ppt
PUBLICIDAD.Pptdiezmarzo
 
L’innovation forum cmit 3 juin 2014
L’innovation forum cmit  3 juin 2014L’innovation forum cmit  3 juin 2014
L’innovation forum cmit 3 juin 2014Yann GLEVER
 
La PresentacióN De La Virgen MaríA
La PresentacióN De La Virgen MaríALa PresentacióN De La Virgen MaríA
La PresentacióN De La Virgen MaríAHijo de Maria
 
Carnet De Bord PôLe Technique
Carnet De Bord PôLe TechniqueCarnet De Bord PôLe Technique
Carnet De Bord PôLe Techniqueguest0ed19c
 
Libro+Mujeres+Y+Tercer+Sector
Libro+Mujeres+Y+Tercer+SectorLibro+Mujeres+Y+Tercer+Sector
Libro+Mujeres+Y+Tercer+Sectorguestfc2c7
 

En vedette (20)

Lunes
LunesLunes
Lunes
 
Possible Lair - Capri Restaurant
Possible Lair - Capri RestaurantPossible Lair - Capri Restaurant
Possible Lair - Capri Restaurant
 
Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...
Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...
Taee2004:Electrónica de Potencia: Reflexiones sobre la docencia y herramienta...
 
Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...
Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...
Donnez de l’envergure à vos analyses – Performance et précision au-delà de 45...
 
Talleres Vivenciales de Me Haces la Taba Dic13
Talleres Vivenciales de Me Haces la Taba Dic13Talleres Vivenciales de Me Haces la Taba Dic13
Talleres Vivenciales de Me Haces la Taba Dic13
 
Paris : projet de Damineh et Alba, de 6e
Paris : projet de Damineh et Alba, de 6eParis : projet de Damineh et Alba, de 6e
Paris : projet de Damineh et Alba, de 6e
 
Compu training sa
Compu training saCompu training sa
Compu training sa
 
La Comunicacion
La ComunicacionLa Comunicacion
La Comunicacion
 
Elodie Mielczareck
Elodie MielczareckElodie Mielczareck
Elodie Mielczareck
 
Tob25 12pps
Tob25 12ppsTob25 12pps
Tob25 12pps
 
Actitud
ActitudActitud
Actitud
 
¿Cómo son las revistas científicas españolas en WoS y Scopus?
¿Cómo son las revistas científicas españolas en WoS y Scopus?¿Cómo son las revistas científicas españolas en WoS y Scopus?
¿Cómo son las revistas científicas españolas en WoS y Scopus?
 
Weekly actions du 12 au 16 avril 2010‏
Weekly actions du 12 au 16 avril 2010‏Weekly actions du 12 au 16 avril 2010‏
Weekly actions du 12 au 16 avril 2010‏
 
3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuel3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuel
 
PUBLICIDAD.Ppt
PUBLICIDAD.PptPUBLICIDAD.Ppt
PUBLICIDAD.Ppt
 
L’innovation forum cmit 3 juin 2014
L’innovation forum cmit  3 juin 2014L’innovation forum cmit  3 juin 2014
L’innovation forum cmit 3 juin 2014
 
La PresentacióN De La Virgen MaríA
La PresentacióN De La Virgen MaríALa PresentacióN De La Virgen MaríA
La PresentacióN De La Virgen MaríA
 
Carnet De Bord PôLe Technique
Carnet De Bord PôLe TechniqueCarnet De Bord PôLe Technique
Carnet De Bord PôLe Technique
 
Arman
ArmanArman
Arman
 
Libro+Mujeres+Y+Tercer+Sector
Libro+Mujeres+Y+Tercer+SectorLibro+Mujeres+Y+Tercer+Sector
Libro+Mujeres+Y+Tercer+Sector
 

Similaire à Chapter1

ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 
BreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec AzureBreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec AzureNicolas Georgeault
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxHamzaElgari
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Nazih Heni
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonStéphane Liétard
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Environnement et technologies web
Environnement et technologies webEnvironnement et technologies web
Environnement et technologies webIrinaTsimpilova1
 

Similaire à Chapter1 (20)

ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
BreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec AzureBreizhCamp - Drupal7 dans le cloud avec Azure
BreizhCamp - Drupal7 dans le cloud avec Azure
 
Partie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptxPartie 1_Matriser les bases PHP v0555555555555.pptx
Partie 1_Matriser les bases PHP v0555555555555.pptx
 
Presentation forum php 2010
Presentation forum php 2010Presentation forum php 2010
Presentation forum php 2010
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Google Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative CommonGoogle Web Toolkit 1.5 Presentation Web Creative Common
Google Web Toolkit 1.5 Presentation Web Creative Common
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Do you speak technique ?
Do you speak technique ?Do you speak technique ?
Do you speak technique ?
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Environnement et technologies web
Environnement et technologies webEnvironnement et technologies web
Environnement et technologies web
 

Chapter1

  • 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 travail destiné à être intemporel, en utilisant votre natel, votre agenda éléctronique, votre chaussure, ou n'importe quelle machine dévouée (superceding) à Internet   vous trouverez 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 qu'on vous ré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 ressentie lors de la construction de sites Web dynamiques. Il abstrait les problèmes courants du dévelopemment Web et fourni des raccourcis pour les tâches de programmation fréquentes. Pour plus de clarté, un site Web dynamique est un site dont les pages ne sont pas simplement des documents HTML déposés sur un serveur de fichier quelconque. Dans un site dynamique, chaque page est générée par un logiciel informatique   que l'on appelle aussi une application Web   que vous créez vous, le développeur. Une application peut, par exemple, récupérer des informations d'une base de donné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 qui gère les requêtes. En d'autres termes, il vous donne un moyen de choisir quel code est exécuté par telle URL. Pour l'exemple, vous pourriez dire au framework « Pour les URL qui ressemblent à /users/joe/, exécute le code qui affiche le profil de l'utilisateur qui a ce nom ». * Il rend facile l'affichage, la validation, et le ré-affichage des formulaires HTML. Les formulaires HTML sont la manière basique de récolter les entrées des utilisateurs du Web. Un framework Web doit rendre leur affichage facile et simplifier la gestion fastidieuse du code d'affichage et de ré-affichage (avec les erreurs mises en évidence). * Il convertit les données de l'utilisateur 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 l'apparence de votre site sans affecter son contenu et vice-versa. * Il s'intègre naturellement avec une couche de stockage   comme les base de données   mais ne nécessite pas forcement une base de données. * Il vous permet d'être plus productif, à un plus haut niveau d'abstraction, 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é de fonctionnalités qui surpasse ce qu'un 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 ce livre n'inclut pas un tutoriel Python complet, il met en lumière les particularités et fonctionnalités de Python, aux endroits appropriés, particulièrement quand le code n'est pas auto explicatif. ...qui encourage le développement rapide... ------------------------------------------- En dépit des nombreuses fonctionnalités qu'il propose, un framework Web est sans valeur si il ne vous permet pas de gagner du temps. La philosophie de Django 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, comme nous l'aimons, laisse nous faire cette liste: * Python est un langage interprété, ce qui signifie qui n'y a pas de compilation de code: Il suffit d'écrire votre programme et de l'exécuter. En dévelopmment Web cela signifie que vous pouvez développer votre code et constater immédiatement les résultats en appuyant  Recharger  dans votre navigateur. * Python est typé dynamiquement, ce qui sgnifie que vous n'avez pas à vous soucier de déclarer le type de donnée de vos variables. * Pyton a une syntaxe concise et expressive, ce qui signifie que cela prend moins code pour accomplire la même tâche que dans un langage plus verbeux comme Java. Une ligne de python équivalent souvent à 10 lignes de Java. (Qui dit moins de lignes dit aussi moins de bogues.) * Python offre des fonctionnalités puissante comme l'introspection et la meta- programmation, qui rendent possible d'inspecter et d'ajouter des comportements aux objets durant la phase d'exécution. Derrière les avantages en productivités inhérentes à Python, Django fait tous les efforts pour encourager un développement rapide. Chaque partie du framework a été conçu avec comme but la productivité. Nous allons voir des exemples de cela partout dans ce livre. …et une conception propre et pragmatique ----------------------------------------
  • 3. Finalement, Django maintient volontairement un design propre partout dans son propre code et encourage l'application des meilleurs pratiques de développement Web dans les applications que vous créez. Cela signifie que si Django était une voiture, il serait une élégante voiture de sport, capable non seulement d'atteindre des vitesses élevées et de tourner sec, mais aussi d'aller loin en ayant des émissions propres. La philosophie est la suivante: avec Django il est facile de faire les choses de la  bonne  manière. Spécificement, Django encourage le faible couplage: les différentes pièces de l'application doivent être interchangeables et soivent communiquer entre elles via des API claires et concises. Par exemple, le système de template ne sait rien du système de base de données, qui ne connait rien de la couche requète/réponse, qui ne sais rien du cache. Chacune de ces couches est séparée et faiblement couplée à l'ensemble. En pratique cela signifie que vous pouvez mélanger et choisir les couches si besoin est. Django suit l'architecture "Modèle-Vue-Contrôleur" (MVC). En bref, il s'agit d'une manière de développper du logiciel afin que le code définissant et accédant aux données (le Modèle) soit séparé de la logique métier (le Contrôleur), qui est à son tour séparé de l'interface utilisateur (la Vue). MVC est mieux expliqué par un exemple de ce qu'il ne faut pas faire. Regardez le code PHP suivant: il va chercher une liste de personnes depuis une base de données MySQL et affiche cette liste dans une page HTML simple. (Oui, nous savons que les progammeurs disciplinés peuvent écrire du code PHP propre; nous utilisons 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 est contenu dans un seul fichier   c'est une mauvaise pratique pour plusieurs raisons: * La présentation est lié au code. Si un graphiste désire modifier cette page HTML, il ou elle devra modifier ce code, car HTML et PHP sont entrelacé. Par contraste, l'approche 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 programmeurs travail avec du code, et les designers avec HTML. * Le code de la base de données est lié avec la logique métier. C'est un problème de redondance: Si vous renommer votre base de données ou ses colonnes, vous devrez réécrire votre SQL. * Par contraste, l'approche MVC de Django encourage une seule couche abstraite d'accès aux données qui est responsable de tout accès aux données. Dans le cas de Django, la couche d'accès aux données connais le nom vos tables et de vos colonnes et vous laisse ainsi exécuter les requètes SQL via Python au lieu d'écrire du SQL manuellement. Cela signifie que si les noms de vos tables changent, vos devrez les changer dans un seul endroit   dans la définition de votre modèle   au lieu de le faire à travers tout votre code pour chaque instruction SQL. * L'URL est couplé au code. Si ce fichier PHP existe comme /foo/index.php, il sera exécuté pour chaque requète à cette adresse. Mais si ce que vous voulez que ce code soit exécuté pour les requètes /bar/ et /baz/? Vous devrez mettre en place des inclusions ou des règles de ré-écriture, qui deviendront rapidemment ingérables. Par contrate, Django découple les URLs du code de réponse afin que vous puissiez changer les URL pour un morceau de code donné. * Les paramètres de connexion à la base de donnés sont codés en dur. C'est malpropre de spécifier des informations de connexion   le serveur, le nom d'utilisateur et le mot de passe   dans le code car il s'agit de configuration et non de logique de programmation. En outre, cet exemple code en dur le fait que la base de données utilisée est MySQL. Par contraste, Django a une place unique pour stocker la configuration. La couche d'accès aux données est abstraite de tel manière qu'il soit facile de changer 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 en tê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 d'une façon soigeusement planifiée afin de faire croire à votre patron que vous n'êtes pas chez vous en train de regarder "Le Juste Prix". * Un peu plus sérieusement, Django n'inverse pas l'effet du réchauffement global. Dans quel but Django a-t-il été développé Django est profondémment enraciné dans les problèmes et les solutions du monde réel. Il ne pas fut créé pour être commercialisé et vendu aux développeurs. Il ne fut pas non plus créé comme un exercice académique élaboré durant le temps libre d'un hobbiste. Il fut construit dès le premier jour pour résoudre les problèmes courants d'une équipe de développement Web professionel. Il commença fin 2003, pour le journal d'une petite ville du Kansas: Lawrence. Pour une raison ou pour une autre, Le journal "The Lawrence Journal-World" est parvenu à attirer une poignée de talentueux designers et développeurs Web au début des années 2000. Le groupe de travail Web du journal, World Online, devint rapidemment l'un 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 l'industrie du journalisme. Ces innovations 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 des nouvelles 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 page personnel liée aux données météorologiques pour afficher des prévisions des jeux, 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 l'université du Kansas, qui permet aux fans de modifier les scores et les statistiques durant le jeu, et un second système qui utilise des algorithme d'intelligence artificielle pour laisser les fans envoyer des textes complet au système de base 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 de football et de basketball du collègue dont vous auriez besoin, inculant un moyen de comparer deux/plusieurs joueurs ou équipes dans le NCAA (National Collegiate Athletic Association). * Fournir des blogs aux membres de la communauté en mettant en évidence le travail d'écriture de cette communautée   les blogs étaient tendance à l'époque. Les experts en journalisme à travers le monde designèrent World Online comme un exemple du journalisme du futur. Le New York Times publia une histoire de l'entreprise à la première page de la section business; la radio publique nationale fit une série de deux jours à ce sujet. Rob Curley, Le rédacteur en chef de World Online, parla presque toutes les semaines dans des conférences journalistique à travers le monde, présentant les idées innovantes de World Online et les fonctionnalités du site. Dans une industrie morne et démodée, résistante aux changements, World online faisait office d'exception 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éation journalistique de qualité au 21ème siècle que les journalistes eux-même. C'est pourquoi Django fut développé: les développeurs de World Online avaient besoin de développer facilement des sites Web complexes basés sur des bases de données. Fin 2003, les deux développeurs de World Online, Adrian Holovaty et Simon Willison, décidèrent de créer un framwork. Ils choisirent d'utiliser 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, ils commencèrent à créer Django. Deux ans plus tard, durant l'été 2005, après avoir développé Django jusqu'à un point où il était utilisé efficacement par la plupart des sites de 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 des améliorations gratuites de développeurs externes, et généreraient du bruit pour leurs CMS commercial, Elligton (http://www.ellingtoncms.com/). Django fut ouvert à la communauté en juillet 2005 et devint rapidemment populaire. Bien que 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 Online contribue à d'autre aspects en fournissant du temps, du matérial marketing, de la bande passante et de l'hébérgement pour le site du framework (http://www.djangoproject.com/). Qui utilise Django? ------------------- Les développeurs Web à travers le monde utilisent Django. Quelques exemples spécifiques: * World Online, bien sur, continue d'utiliser Django pour tous ces sites Web, aussi bien en interne que pour ces clients commerciaux. Quelques un des sites Django 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 ces projets de base de données et pour des parties variées de fonctionnalités d'un bout à l'autre du site. Quelques exemples: * La base données du congret U.S., http://projects.washingtonpost.com/congress/ * L'annuaire du personnel et des fonctions qui laisse des lecteurs contacter des journalistes, 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 Chicago librement naviguable et une des première application composite utilisant Google Maps, fut développée avec Django. * Tabblo.com, un site de partage de photo innovant, utilisant Django. Le site vous laisse mettre ensembles des photos pour créer des pages qui raconte des histroires. * Texasgigs.com, un site de musique locale, Texas, fut écrit avec Django. * Grono.net un site polonais de réseautage social, commenca en remplacant sont code Java avec Django. Ils trouvèrent non seulement qu'il est plus rapide (et plus 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 SMS afin d'obtenir 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/DjangoPoweredSites About this book --------------- Le but de ce livre est d'expliquer toutes les choses que Django fait et de faire de vous un expert à son utilisation. En lisant ce livre, vous allez apprendre la qualifications nécessaires pour développer rapidemment de puissants sites Web, avec du code propre et facile à maintenir.