developpez votre site web avec le framework django

Upload: emdc01

Post on 06-Feb-2018

225 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    1/208

  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    2/208

  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    3/208

    Dveloppez votre siteweb avec le

    framework DjangoPar Mathieu Xhonneux (MathX)

    www.siteduzero.com

    Licence Creative Commons 6 2.0Dernire mise jour le 2/04/2013

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    4/208

    Sommaire

    2Sommaire ...........................................................................................................................................3Lire aussi ............................................................................................................................................5Dveloppez votre site web avec le framework Django .......................................................................

    5Partie 1 : Prsentation de Django ....................................................................................................... 6Crez vos applications web avec Django .........................................................................................................................6Qu'est-ce qu'un framework ? .......................................................................................................................................................................................6Quels sont les avantages d'un framework ? ...............................................................................................................................................................6Quels sont les dsavantages d'un framework ? ..........................................................................................................................................................6Qu'est-ce que Django ? ...............................................................................................................................................................................................7Pourquoi ce succs ? ..................................................................................................................................................................................................7Une communaut votre service ...............................................................................................................................................................................7Tlchargement et installation ....................................................................................................................................................................................7Linux et Mac OS ..........................................................................................................................................................................................................8Windows ......................................................................................................................................................................................................................9Vrification de l'installation ..........................................................................................................................................................................................9En rsum ...................................................................................................................................................................................................................

    10Le fonctionnement de Django .........................................................................................................................................10Un peu de thorie : l'architecture MVC .....................................................................................................................................................................10La spcificit de Django : le modle MVT .................................................................................................................................................................

    11Projets et applications ...............................................................................................................................................................................................12En rsum .................................................................................................................................................................................................................

    13Gestion d'un projet ..........................................................................................................................................................13Crons notre premier projet ......................................................................................................................................................................................14Configurez votre projet ..............................................................................................................................................................................................16Crons notre premire application ............................................................................................................................................................................17En rsum .................................................................................................................................................................................................................

    18Les bases de donnes et Django ...................................................................................................................................18Une base de donnes, c'est quoi ? ...........................................................................................................................................................................18Le langage SQL et les gestionnaires de base de donnes .......................................................................................................................................19La magie des ORM ...................................................................................................................................................................................................20Le principe des cls trangres ................................................................................................................................................................................21En rsum .................................................................................................................................................................................................................

    22Partie 2 : Premiers pas .....................................................................................................................22Votre premire page grce aux vues ..............................................................................................................................

    22Hello World ! ..............................................................................................................................................................................................................22La gestion des vues ..................................................................................................................................................................................................23Routage d'URL : comment j'accde ma vue ? .......................................................................................................................................................25Organiser proprement vos URL ................................................................................................................................................................................25Comment procde-t-on ? ..........................................................................................................................................................................................27Passer des arguments vos vues ............................................................................................................................................................................28Des rponses spciales ............................................................................................................................................................................................28Simuler une page non trouve ..................................................................................................................................................................................29Rediriger l'utilisateur ..................................................................................................................................................................................................30En rsum .................................................................................................................................................................................................................

    32Les templates ..................................................................................................................................................................32Lier template et vue ...................................................................................................................................................................................................34Affichons nos variables l'utilisateur ........................................................................................................................................................................34Affichage d'une variable ............................................................................................................................................................................................34Les filtres ...................................................................................................................................................................................................................35Manipulons nos donnes avec les tags ....................................................................................................................................................................

    35Les conditions : {% if %} ............................................................................................................................................................................................36Les boucles : {% for %} .............................................................................................................................................................................................37Le tag {% block %} ....................................................................................................................................................................................................39Les liens vers les vues : {% url %} ............................................................................................................................................................................39Les commentaires : {% comment %} ........................................................................................................................................................................40Ajoutons des fichiers statiques ..................................................................................................................................................................................41En rsum .................................................................................................................................................................................................................

    42Les modles ....................................................................................................................................................................42Crer un modle ........................................................................................................................................................................................................43Jouons avec des donnes ........................................................................................................................................................................................47Les liaisons entre modles ........................................................................................................................................................................................52Les modles dans les vues .......................................................................................................................................................................................52Afficher les articles du blog .......................................................................................................................................................................................54Afficher un article prcis ............................................................................................................................................................................................56En rsum .................................................................................................................................................................................................................

    57L'administration ...............................................................................................................................................................

    57Mise en place de l'administration .............................................................................................................................................................................. 57Les modules django.contrib ......................................................................................................................................................................................57Accdons cette administration ! .............................................................................................................................................................................59Premire prise en main .............................................................................................................................................................................................61Administrons nos propres modles ...........................................................................................................................................................................62Personnalisons l'administration .................................................................................................................................................................................63Modifier l'aspect des listes ........................................................................................................................................................................................67Modifier le formulaire d'dition ..................................................................................................................................................................................

    2/205

    www.siteduzero.com

    http://www.siteduzero.com/http://-/?-
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    5/208

    69Retour sur notre problme de slug ............................................................................................................................................................................70En rsum .................................................................................................................................................................................................................

    70Les formulaires ................................................................................................................................................................71Crer un formulaire ...................................................................................................................................................................................................72Utiliser un formulaire dans une vue ...........................................................................................................................................................................74Crons nos propres rgles de validation ...................................................................................................................................................................77Des formulaires partir de modles .........................................................................................................................................................................81En rsum .................................................................................................................................................................................................................

    82La gestion des fichiers ....................................................................................................................................................

    82Enregistrer une image ...............................................................................................................................................................................................83Afficher une image ....................................................................................................................................................................................................85Encore plus loin .........................................................................................................................................................................................................86En rsum .................................................................................................................................................................................................................

    86TP : un raccourcisseur d'URL .........................................................................................................................................87Cahier des charges ...................................................................................................................................................................................................88Correction ..................................................................................................................................................................................................................

    93Partie 3 : Techniques avances ........................................................................................................93Les vues gnriques .......................................................................................................................................................93Premiers pas avec des pages statiques ...................................................................................................................................................................94Lister et afficher des donnes ...................................................................................................................................................................................94Une liste d'objets en quelques lignes avec ListView .................................................................................................................................................98Afficher un article via DetailView ...............................................................................................................................................................................99Agir sur les donnes .................................................................................................................................................................................................99CreateView ................................................................................................................................................................................................................

    100UpdateView .............................................................................................................................................................................................................103DeleteView ..............................................................................................................................................................................................................104En rsum ...............................................................................................................................................................................................................

    105Techniques avances dans les modles ......................................................................................................................106Les requtes complexes avec Q .............................................................................................................................................................................108L'agrgation .............................................................................................................................................................................................................110L'hritage de modles .............................................................................................................................................................................................110Les modles parents abstraits .................................................................................................................................................................................111Les modles parents classiques ..............................................................................................................................................................................112Les modles proxy ..................................................................................................................................................................................................113L'application ContentType .......................................................................................................................................................................................116En rsum ...............................................................................................................................................................................................................

    117Simplifions nos templates : filtres, tags et contextes .....................................................................................................117Prparation du terrain : architecture des filtres et tags ............................................................................................................................................118Personnaliser l'affichage de donnes avec nos propres filtres ...............................................................................................................................118Un premier exemple de filtre sans argument ...........................................................................................................................................................120Un filtre avec arguments .........................................................................................................................................................................................122Les contextes de templates ....................................................................................................................................................................................123Un exemple maladroit : afficher la date sur toutes nos pages ................................................................................................................................123Factorisons encore et toujours ................................................................................................................................................................................125Des structures plus complexes : les custom tags ...................................................................................................................................................126Premire tape : la fonction de compilation ............................................................................................................................................................129Passage de variable dans notre tag ........................................................................................................................................................................131Les simple tags .......................................................................................................................................................................................................131Quelques points ne pas ngliger ..........................................................................................................................................................................132En rsum ...............................................................................................................................................................................................................

    133Les signaux et middlewares ..........................................................................................................................................133Notifiez avec les signaux .........................................................................................................................................................................................136Contrlez tout avec les middlewares ......................................................................................................................................................................139En rsum ...............................................................................................................................................................................................................

    140Partie 4 : Des outils supplmentaires ..............................................................................................140Les utilisateurs ..............................................................................................................................................................

    140Commenons par la base ....................................................................................................................................................................................... 140L'utilisateur ..............................................................................................................................................................................................................141Les mots de passe ..................................................................................................................................................................................................142tendre le modle User ..........................................................................................................................................................................................143Passons aux vues ...................................................................................................................................................................................................143La connexion ...........................................................................................................................................................................................................144La dconnexion .......................................................................................................................................................................................................145En gnral ...............................................................................................................................................................................................................146Les vues gnriques ...............................................................................................................................................................................................146Se connecter ...........................................................................................................................................................................................................147Se dconnecter .......................................................................................................................................................................................................147Se dconnecter puis se connecter ..........................................................................................................................................................................147Changer le mot de passe ........................................................................................................................................................................................147Confirmation du changement de mot de passe ......................................................................................................................................................148Demande de rinitialisation du mot de passe .........................................................................................................................................................148Confirmation de demande de rinitialisation du mot de passe ...............................................................................................................................148Rinitialiser le mot de passe ...................................................................................................................................................................................

    149Confirmation de la rinitialisation du mot de passe .................................................................................................................................................149Les permissions et les groupes ...............................................................................................................................................................................149Les permissions ......................................................................................................................................................................................................151Les groupes .............................................................................................................................................................................................................151En rsum ...............................................................................................................................................................................................................

    151Les messages ...............................................................................................................................................................152Les bases ................................................................................................................................................................................................................

    Sommaire 3/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    6/208

    153Dans les dtails .......................................................................................................................................................................................................154En rsum ...............................................................................................................................................................................................................

    155La mise en cache ..........................................................................................................................................................155Cachez-vous ! .........................................................................................................................................................................................................155Dans des fichiers .....................................................................................................................................................................................................155Dans la mmoire .....................................................................................................................................................................................................156Dans la base de donnes .......................................................................................................................................................................................156En utilisant Memcached ..........................................................................................................................................................................................157Pour le dveloppement ...........................................................................................................................................................................................

    157Quand les donnes jouent cache-cache ..............................................................................................................................................................157Cache par vue .........................................................................................................................................................................................................158Dans les templates ..................................................................................................................................................................................................158La mise en cache de bas niveau .............................................................................................................................................................................160En rsum ...............................................................................................................................................................................................................

    161La pagination .................................................................................................................................................................161Exerons-nous en console ......................................................................................................................................................................................163Utilisation concrte dans une vue ...........................................................................................................................................................................165En rsum ...............................................................................................................................................................................................................

    165L'internationalisation ......................................................................................................................................................166Qu'est-ce que le i18n et comment s'en servir ? ......................................................................................................................................................169Traduire les chanes dans nos vues et modles .....................................................................................................................................................172Cas des modles ....................................................................................................................................................................................................172Traduire les chanes dans nos templates ................................................................................................................................................................173Le tag {% trans %} ...................................................................................................................................................................................................173Le tag {% blocktrans %} .........................................................................................................................................................................................

    174Aidez les traducteurs en laissant des notes ! ..........................................................................................................................................................175Sortez vos dictionnaires, place la traduction ! ......................................................................................................................................................175Gnration des fichiers .po .....................................................................................................................................................................................177Gnration des fichiers .mo ....................................................................................................................................................................................177Le changement de langue .......................................................................................................................................................................................178En rsum ...............................................................................................................................................................................................................

    178Les tests unitaires .........................................................................................................................................................179Nos premiers tests ..................................................................................................................................................................................................181Testons des vues ....................................................................................................................................................................................................183En rsum ...............................................................................................................................................................................................................

    183Ouverture vers de nouveaux horizons : django.contrib ................................................................................................184Vers l'infini et au-del ..............................................................................................................................................................................................185Dynamisons nos pages statiques avec flatpages ! .................................................................................................................................................185Installation du module .............................................................................................................................................................................................186Gestion et affichage des pages ...............................................................................................................................................................................187Lister les pages statiques disponibles .....................................................................................................................................................................

    188Rendons nos donnes plus lisibles avec humanize ................................................................................................................................................188apnumber ................................................................................................................................................................................................................188intcomma .................................................................................................................................................................................................................188intword .....................................................................................................................................................................................................................189naturalday ................................................................................................................................................................................................................189naturaltime ..............................................................................................................................................................................................................190ordinal ......................................................................................................................................................................................................................190En rsum ...............................................................................................................................................................................................................

    191Partie 5 : Annexes ...........................................................................................................................191Dployer votre application en production ......................................................................................................................191Le dploiement ........................................................................................................................................................................................................193Gardez un il sur le projet ......................................................................................................................................................................................193Activer l'envoi d'e-mails ...........................................................................................................................................................................................194Quelques options utiles .......................................................................................................................................................................................195Hbergeurs supportant Django ...............................................................................................................................................................................195En rsum ...............................................................................................................................................................................................................

    196L'utilitaire manage.py .................................................................................................................................................... 196Les commandes de base ........................................................................................................................................................................................196Prrequis .................................................................................................................................................................................................................196Liste des commandes .............................................................................................................................................................................................199La gestion de la base de donnes ..........................................................................................................................................................................203Les commandes d'applications ...............................................................................................................................................................................

    Lire aussi 4/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    7/208

    Dveloppez votre site web avec le framework Django

    Par Maxime Lorant (Ssx`z) et Mathieu Xhonneux (MathX)

    Mise jour : 02/04/2013Difficult : Intermdiaire Dure d'tude : 15 jours

    3 218 visitesdepuis 7 jours, class 49/805

    DjangoLe framework web pour les perfectionnistes sous pression

    En quelques annes , les sites web n'ont cess d'voluer. Ils requirent dsormaisdes dveloppements longs et acharns , sans oublier le fait que ceux-ci peuventparfois devenir trs complexes et se mesurer en milliers de lignes de code.Aujourd'hui, la simplepage web ne suffit plus, et que ce soit dans un cadreprofessionnel ou personnel, les attentes sont de plus en plus lourdes .

    C'est de ce constat qu'est n Django : proposer un dveloppement plus efficace etplus rapided'une application dynamique web, tout en conservant la qualit ! Cecours vous apprendra construire des sites web complexes et lgants, et en untemps record.

    Ce tutoriel ncessite des connaissances pralables dans les domaines suivants :

    Python: bonne matrise des bases, de la programmation oriente objet et des express ions rgulires ;HTML/CSS: matrise de toute la partie HTML (nous ne parlerons pas de CSS).

    Si vous ne connaissez pas ces prrequis, nous ne pouvons que vous conseiller de les tudier avant d'entamer cetutoriel.

    Ce cours porte sur la version 1.5 de Django, et n'assure nullement que toutes les mthodes prsentes fonctionneront forcmentsur des versions antrieures ou postrieures.

    Lire aussi 5/205

    www.siteduzero.com

    http://www.siteduzero.com/tutoriel-3-223267-apprenez-a-programmer-en-python.htmlhttp://www.siteduzero.com/http://www.siteduzero.com/tutoriel-3-13666-apprenez-a-creer-votre-site-web-avec-html5-et-css3.htmlhttp://www.siteduzero.com/tutoriel-3-223267-apprenez-a-programmer-en-python.htmlhttp://uploads.siteduzero.com/files/386001_387000/386523.pnghttp://www.v3.siteduzero.com/tutoriels-les-plus-visiteshttp://www.v3.siteduzero.com/tutoriel-21-700664-developpez-votre-site-web-avec-le-framework-django.htmlhttp://www.v3.siteduzero.com/membres-294-30759.htmlhttp://www.v3.siteduzero.com/membres-294-845.html
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    8/208

    Partie 1 : Prsentation de Django

    Cette partie est avant tout introductive et thorique. Elle a pour but d'expliquer ce qu 'est Django, son fonctionnement, la gestiond'un projet, etc.

    Crez vos applications web avec DjangoSi vous lisez ceci, c'est que vous avez dcid de vous lancer dans l'apprentissage de Django. Avant de commencer, desprsentations s'imposent : Django est un framework webcrit en Python, qui se veut complet tout en facilitant la crationd'applications web riches .

    Avant de commencer crire du code, nous allons tout d'abord voir dans ce chapitre ce qu'est un framework en gnral, et plusparticulirement ce qu'es t Django. Dans un second temps, nous verrons comment l'installer sur votre machine, pour pouvoircommencer travailler ! Est-il utile de vous rappeler encore ici qu'il est ncessaire d'avoir les bases en Pythonpour pouvoircommencer ce cours ?

    Qu'est-ce qu'un framework ?Un framework est un ensemble d'out ils qui simplifie le travail d'un dveloppeur. Traduit littralement de l'anglais, un frameworkest un cadre de travail . Il apporte les bases communes la majorit des programmes ou des sites web. Celles-ci tant souventidentiques (le fonctionnement d 'un espace membres es t commun une trs grande majorit de s ites web de nos jours), un

    dveloppeur peut les rutiliser simplement et se concentrer sur les particularits de son projet.

    Il s'agit donc d'un ensemble de bibliothques coordonnes , qui permettent un dveloppeur d'viter de rcrire plusieurs foisune mme fonctionnalit, et donc d'viter de rinventer constamment la roue. Inutile de dire que le gain en nergie et en tempsest considrable !

    Quels sont les avantages d'un framework ?

    Un framework instaure en quelque sorte s a ligne de conduite . Tous les dveloppeurs Django codent de faon assezhomogne (leurs codes ont le mme fonctionnement, les mmes principes). De ce fait, lorsqu'un dveloppeur rejoint un projetutilisant un framework qu'il connat dj, il comprendra trs vite ce projet et pourra se mettre rapidement au travail.

    Le fait que chaque framework possde une structure commune pour tous ses projets a une consquence tout aussi intressante :

    en utilisant un framework, votre code sera le plus s ouvent dj organis, propre et facilement rutilisable par autrui.

    Voici d'ailleurs un grand dfi des frameworks : bien que ceux-ci doivent ins taurer une structure commune, ils doivent aus si tresouples et modulables, afin de pouvoir tre utiliss pour une grande varit de projets, du plus banal au plus exotique.Autrement, leur intrt serait grandement limit !

    Quels sont les dsavantages d'un framework ?

    Honntement, il n'existe pas vraiment de dsavantages utiliser un framework. Il faut bien videmment prendre du temps apprendre en manier un, mais ce temps d'apprentiss age es t largement rcupr par la suite, vu la vitesse de dveloppement quipeut parfois tre dcuple. Nous pourrions ventuellement dire que certains frameworks sont parfois un peu trop lourds , mais ilincombe s on utilisateur de choisir le bon framework, adapt ses besoins.

    Qu'est-ce que Django ?Django est donc un framework Python destin au web. Ce n'est pas le seul dans sa catgorie, nous pouvons compter d'autresframeworks Python du mme genre comme web2py, TurboGears, CherryPy ou Zope. Il a cependant le mrite d'tre le plusexhaustif, d'automatiser un bon nombre de chos es et de disposer d'une trs grande communaut.

    Le logo de Django

    Django es t n en 2003 dans une agence de press e qui devait dvelopper des s ites web complets dans des laps de temps trscourts (d'o l'ide du framework). En 2005, l'agence de presse Lawrence Journal-Worlddcide de publier Django au grand public,le jugeant ass ez mature pour tre rutilis n'importe o. Trois ans plus tard, la fondation Django Software est cre par lesfondateurs du framework afin de pouvoir maintenir celui-ci et la communaut trs active qui l'entoure.

    Aujourd'hui, Django est devenu trs populaire et est utilis par des socits du monde entier, telles qu'Instagram, Pinterest, et

    Dveloppez votre site web avec le framework Django 6/205

    www.siteduzero.com

    http://www.siteduzero.com/http://pinterest.com/http://instagr.am/http://www2.ljworld.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    9/208

    mme laNASA!

    Logos d'Instagram, de la NASA et

    de Pinterest

    Pourquoi ce succs ?

    Si Django est devenu trs populaire, c'est notamment grce sa philosophie, qui a su sduire de nombreux dveloppeurs etchefs de projets. En effet, le framework prne le principe du Don't repeat yourself, c'est--dire en franais Ne vous rptezpas , et permet le dveloppement rapide de meilleures et plus performantes applications web, tout en conservant un codelgant.

    Django a pu appliquer sa philosophie de plusieurs manires. Par exemple, l'administration d'un site sera automatiquementgnre, et celle-ci est trs facilement adaptable. L'interaction avec une bas e de donnes se fait via un ensemble d'outilsspcialiss et trs pratiques. Il est donc inutile de perdre son temps crire directement des requtes destines la base dedonnes , car Django le fait automatiquement. De plus, d'autres bibliothques compltes et bien penses sont disponibles,comme un espace membres, ou une bibliothque permettant la traduction de votre application web en plusieurs langues.

    Une communaut votre service

    videmment, Django dispose des avantages de tous les frameworks en gnral. Il est soutenu par une communaut active etexprimente, qui publie rgulirement de nouvelles vers ions du framework avec de nouvelles fonctionnalits, des corrections debugs, etc.

    Encore un point, et non des moindres, la communaut autour de Django a rdig au fil des annes une documentation trscomplte sur docs.djangoproject.com. Bien que celle-ci soit en anglais, elle reste trs accessible pour des francophones. Nous nepouvons que vous conseiller de la lire en parallle de ce cours si vous voulez approfondir un certain sujet ou si certaines zonesd'ombre persistent.

    Enfin, pour gagner encore plus de temps, les utilisateurs de Django ont gnralement l'esprit open sourceet fournissent une listedesnippets, des portions de code rutilisables par n'importe qui. Un siteest ddi cessnippets. Si vous devez vous attaquer une grosse application ou une portion de code particulirement difficile, n'hsitez pas aller chercher dans lessnippets, vous ytrouverez souvent votre bonheur !

    Tlchargement et installationMaintenant que nous avons vu les avantages qu'apporte Django, il est temps de passer son installation. Tout d'abord, assurez-vous que vous disposez bien d'une version de Python suprieure ou gale la 2.6.5 pour la branche 2.6.x ou la 2.7.3 pour labranche 2.7 .xet suprieure. Pour plus d'informations ce sujet, vous pouvez vous reporter au cours s ur le Python du Site duZro.

    Django 1.5 est galement compatible avec Python 3, mais de faon exprimentale: quelques modules, comme laconnexion avec MySQL sont indisponibles, faute de bibliothque compatible Python 3... Nous vous recommandonsdonc d'attendre Django 1.6 avant de s auter vers Python 3 pour vos applications web.Par ailleurs, le support de Python 2.5 est abandonn depuis Django 1.5. Nous vous conseillons ds maintenantd'utiliser Python 2.7.3, qui est bien plus stable et jour.

    Il est galement plus prudent de supprimer toutes les anciennes installations de Django, si vous en avez dj. Il peut y avoir desconflits entre les versions, notamment lors de la gestion des projets. Il est es sentiel de n'avoir que Django 1.5 sur votre machine, part si vous avez dj des applications en production sur des versions antrieures. Dans ce cas , il est conseill soit de portertoutes vos applications pour Django 1.5, soit d'excuter vos deux projets avec deux versions de Django bien indpendantes.

    Linux et Mac OSSous Linux et Mac OS, l'installation de Django peut s'effectuer de deux manires diffrentes, soit en utilisant le gestionnaire depaquets de votre dist ribution (ou MacPorts pour Mac OS), soit en installant Django manuellement, via une archive officielle.Nous ne couvrirons pas la premire solution, celle-ci dpendant beaucoup trop de votre dist ribution. Si toutefois vouschoisissez cette solution, faites attention la version de Django disponible dans les dpts . Il se peut que ce ne soit pas

    Dveloppez votre site web avec le framework Django 7/205

    www.siteduzero.com

    http://www.siteduzero.com/http://djangosnippets.org/http://docs.djangoproject.com/http://www.nasa.gov/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    10/208

    toujours la dernire version qui soit disponible, donc pas jour et incompatible avec ce cours.

    Si vous ne passez pas par les dpts , le plus simple reste de tlcharger une archive. Il suffit ensuite de l'extraire et de l'ins taller,en effectuant les commandes suivantes dans une console :

    Code : Console

    tar xzvf Django-1.5.tar.gzcd Django-1.5sudo python setup.py install

    Windows

    Contrairement aux environnements UNIX, l'installation de Django sous Windows requiert quelques manipulationssupplmentaires. Tlchargez l'archive de Djangoet extrayez-la. Avant de continuer, nous allons devoir modifier quelquesvariables d'environnement, afin de permettre l'installation du framework. Pour cela (sous Windows 7) :

    1. Rendez-vous dans les informations gnrales du systme (via le raccourci Windows + Pause) ;2. Cliquez sur Paramtres systme avancs, dans le menu de gauche ;3. Une fois la fentre ouverte, cliquez sur Variables d'environnement;4. Cherchez la variable systme (deuxime liste) Pathet ajoutez ceci en fin de ligne (faites attention votre version de

    Python) : ;C:\Python27\;C:\Python27\Lib\site-packages\django\bin\. Respectez bien le point-virgule permettant de s parer le rpertoire de ceux dj prsents , comme indiqu la figure suivante.

    dition du Path sous Windows 7

    Validez, puis quittez. Nous pouvons dsormais installer Django via la console Windows (Windows + R puis la commande cmd ):

    Dveloppez votre site web avec le framework Django 8/205

    www.siteduzero.com

    http://www.siteduzero.com/https://www.djangoproject.com/download/https://www.djangoproject.com/download/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    11/208

    Code : Console

    cd C:\Users\

  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    12/208

    Le fonctionnement de DjangoAttaquons-nous au vif du sujet ! Dans ce chapitre, thorique mais fondamental, nous allons voir comment sont const ruits laplupart des frameworks grce au modle MVC, nous aborderons ensuite les spcificits du fonctionnement de Django etcomment les lments d'une application class ique Django s'articulent autour du modle MVT, que nous introduirons galement.En dernier lieu, nous expliquerons le sys tme de projets et d'applications, propre Django, qui permet une sparation nette,propre et prcise du code.

    Au terme de ce chapitre, vous aurez une vue globale sur le fonctionnement de Django, ce qui vous sera grandement ut ile lorsquevous commencerez crer vos premires applications.

    Un peu de thorie : l'architecture MVCLorsque nous parlons de frameworks qui fournissent une interface graphique l'utilisateur (soit une page web, comme ici avecDjango, soit l'interface d'une application graphique classique, comme celle de votre traitement de texte par exemple), nousparlons souvent de l'architecture MVC. Il s'agit d'un modle distinguant plusieurs rles prcis d'une application, qui doivent treaccomplis. Comme son nom l'indique, l'architecture (ou patron ) Modle-Vue-Contrleur est compos de trois entitsdistinctes, chacune ayant son propre rle remplir.

    Tout d'abord, le modle reprsente une information enregistre quelque part, le plus souvent dans une base de donnes. Ilpermet d'accder l'information, de la modifier, d'en ajouter une nouvelle, de vrifier que celle-ci correspond bien aux critres (onparle d'intgrit de l'information), de la mettre jour, etc. Il s'agit d'une interface supplmentaire entre votre code et la base de

    donnes , mais qui s implifie grandement les choses, comme nous le verrons par la suite.

    Ensuite la vue qui est, comme son nom l'indique, la visualisation de l'information. C'est la seule chose que l'utilisateur peut voir.Non seulement elle sert prsenter une donne, mais elle permet aussi de recueillir une ventuelle actionde l'utilisateur (un clicsur un lien, ou la soumission d'un formulaire par exemple). Typiquement, un exemple de vue est une page web, ni plus, ni moins.

    Finalement, le contrleurprend en charge tous les vnements de l'util isateur(accs une page, soumission d 'un formulaire,etc.). Il se charge, en fonction de la requte de l'utilisateur, de rcuprer les donnes voulues dans les modles. Aprs unventuel traitement s ur ces donnes , il transmet ces donnes la vue, afin qu'elle s'occupe de les afficher. Lors de l'appel d'unepage, c'est le contrleur qui est charg en premier, afin de savoir ce qu'il est ncessaire d'afficher.

    Schma de l'architecture MVC

    La spcificit de Django : le modle MVTL'architecture utilise par Django diffre lgrement de l'architecture MVC classique. En effet, la magie de Django rside dansle fait qu'ilgre lui-mme la partie contrleur(gestion des requtes du client, des droits sur les actions). Ainsi, nous parlonsplutt de framework utilisant l'architecture MVT: Modle-Vue-Template.

    Cette architecture reprend les dfinitions de modle et de vue que nous avons vues , et en introduit une nouvelle : le template(voir figure suivante). Un template es t un fichier HTML, aussi appel en franais gabarit . Il sera rcupr par la vue et envoyau visiteur ; cependant, avant d'tre envoy, il sera analys et excut par le framework, comme s 'il s'agissait d'un fichier avec ducode. Django fournit un moteur de templates trs utile qui permet, dans le code HTML, d'afficher des variables, d'utiliser desstructures conditionnelles (if/else) ou encore des boucles (for), etc.

    Dveloppez votre site web avec le framework Django 10/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    13/208

    Schma d'excution d'une requte

    Concrtement, lorsque l'internaute appelle une page de votre s ite ralis avec Django, le framework se charge, via les rgles deroutage URL dfinies, d'excuter la vue correspondante. Cette dernire rcupre les donnes des modles et gnre un renduHTML partir du template et de ces donnes. Une fois la page gnre, l'appel fait chemin arrire, et le serveur renvoie le rsultatau navigateur de l'internaute.

    On dist ingue les quatre parties qu'un dveloppeur doit grer :

    Le routage des requtes, en fonction de l'URL ;La reprsentation des donnes dans l'application, avec leur gestion (ajout, dition, suppress ion), c'est--dire lesmodles ;L'affichage de ces donnes et de toute autre information au format HTML, c'est--dire les templates ;Enfin le lien entre les deux derniers points : la vue qui rcupre les donnes et gnre le template s elon celles-ci.

    On en revient donc au modle MVT. Le dveloppeur se doit de fournir le modle, la vue et le template. Une fois cela fait, il suffitjuste d'assigner la vue une URL prcise, et la page es t accessible.

    Si le template est un fichier HTML classique, un modle en revanche sera crit sous la forme d'une class e o chaque attribut decelle-ci correspondra un champ dans la base de donnes. Django se chargera ensuite de crer la table correspondante dans labase de donnes, et de faire la liaison entre la base de donnes et les objets de votre classe. Non seu lement il n'y a plus besoind'crire de requtes pour interagir avec la base de donnes , mais en plus le framework propose la reprsentation de chaqueentre de la table sous forme d'une instance de la classe qui a t crite. Il suffit donc d'accder aux attributs de la class e pouraccder aux lments dans la table et pouvoir les modifier, ce qui est trs pratique !

    Enfin, une vue est une simple fonction , qui prend comme paramtres des informations sur la requte (s'il s'agit d'une requte GET

    ou POST par exemple), et les paramtres qui ont t donns dans l'URL. Par exemple, si l'identifiant ou le nom d'un article du bloga t donn dans l'URL crepes-bretonnes.com/blog/faire-de-bonnes-crepes, la vue rcuprera faire-de-bonnes-crepescomme titre et cherchera dans la base de donnes l'article correspondant afficher. Suite quoi la vuegnrera le template avec le bon article et le renverra l'utilisateur.

    Projets et applicationsEn plus de l'architecture MVT, Django introduit le dveloppement d'un s ite sous forme de projet. Chaque site web conu avecDjango es t cons idr comme un projet, compos de plusieurs applications. Une application cons iste en un dos sier contenantplusieurs fichiers de code, chacun tant relatif une tche du modle MVT que nous avons vu. En effet, chaque bloc du siteweb est isol dans un dossier avec ses vues, ses modles et ses schmas d'URL.

    Lors de la conception de votre s ite, vous allez devoir penser aux applications que vous souhaitez dvelopper. Voici quelquesexemples d'applications :

    Un module d'actualits ;Un forum ;Un systme de contact ;Une galerie de photos ;Un systme de dons .

    Dveloppez votre site web avec le framework Django 11/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    14/208

    Ce principe de s paration du projet en plusieurs applications possde deux avantages principaux :

    Le code est beaucoup plus structur. Les modles et templates d'une application ne seront que rarement ou jamaisutiliss dans une autre, nous gardons donc une sparation nette entre les diffrentes applications, ce qui vite des'emmler les pinceaux !Une application correctement conue pourra tre rutilise dans d'autres projets trs simplement, par un s implecopier/coller, comme le montre la figure s uivante.

    Organisation

    d'un projet Django et rutilisation d'une application

    Ici, le dveloppement du systme d'articles sera fait une fois uniquement. Pour le second site, une lgre retouche des templatessuffira. Ce systme permet de voir le site web comme des botes que nous agenons ensemble, acclrant cons idrablement ledveloppement pour les projets qui suivent.

    En rsum

    Django respecte l'architecture MVT, directement inspire du trs populaire modle MVC ;Django gre de faon autonome la rception des requtes et l'envoi des rponses au client (partie contrleur) ;Un projet es t divis en plusieurs applications, ayant chacune un ensemble de vues , de modles et de schmas d 'URL ;Si elles sont bien conues, ces applications sont rutilisables dans d'autres projets, puisque chaque application estindpendante.

    Dveloppez votre site web avec le framework Django 12/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    15/208

    Gestion d'un projetDjango propose un outil en ligne de commandes trs utile qui permet normment de choses :

    Cration de projets et applications ;Cration des tables dans la base de donnes selon les modles de l'application ;Lancement du serveur web de dveloppement ;Etc.

    Nous verrons dans ce chapitre comment utiliser cet outil, la st ructure d'un projet Django classique, comment crer ses projets etapplications, et leur configuration.

    Crons notre premier projetL'outil de gestion fourni avec Django se nomme django-admin.pyet il n'est access ible qu'en ligne de commandes . Pour cefaire, munissez-vous d'une console MS-DOS sous Windows, ou d'un terminal sous Linux et Mac OS X.

    Attention ! La console sys tme n'est pas l'interprteur Python ! Dans la console sys tme, vous pouvez excuter descommandes systme comme l'ajout de doss ier, de fichier, tandis que dans l'interprteur Python vous crivez du codePython.

    Sous Windows, allez dans le menu Dmarrer > Excuteret tapez dans l'invite de commande cmd . Une console s'ouvre,dplacez-vous dans le doss ier dans lequel vous souhaitez crer votre projet grce la commande cd , suivie d'un chemin.Exemple :

    Code : Console

    cd C:\Mes Documents\Utilisateur\

    Sous Mac OS X et Linux, lancez tout s implement l'application Terminal (elle peut parfois galement tre nomme Console sousLinux), et dplacez-vous dans le dossier dans lequel vous souhaitez crer votre projet, galement l'aide de la commande cd .

    Exemple :

    Code : Console

    cd /home/mathx/Projets/

    Tout au long du tutoriel, nous utiliserons un blog sur les bonnes crpes bretonnes comme exemple. Ainsi, appelons notre projetcrepes_bretonnes(seuls les caractres alphanumriques et underscores sont autoriss pour le nom du projet) et crons-legrce la commande suivante :

    Code : Console

    django-admin.py startproject crepes_bretonnes

    Un nouveau dossier nomm crepes_bretonnesest apparu et possde la structure suivante :

    Code : Autre

    crepes_bretonnes/ manage.py crepes_bretonnes/ __init__.py settings.py urls.py wsgi.py

    Dveloppez votre site web avec le framework Django 13/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    16/208

    Il s'agit de votre projet.

    Dans le dossier principal crepes_bretonnes, nous retrouvons deux lments : un fichier manage.pyet un autre sous -dossier nomm galement crepes_bretonnes. Crez dans le dossier principal un dossier nomm templates, lequelcontiendra vos templates HTML.

    Le sous-dos sier contient quatre fichiers Python, savoirsettings.py, urls.py, wsgi.pyet __init__.py. Ne

    touchez surtout pas ces deux derniers fichiers, ils n'ont pas pour but d'tre modifis ! Les deux autres fichiers ont des nomsplutt loquents :settings.pycontiendra la configuration de votre projet, tandis que urls.pyrassemblera toutes les URLde votre s ite web et la liste des fonctions appeler pour chaque URL. Nous reviendrons sur ces deux fichiers plus tard.

    Ensuite, le fichier manage.pyes t en quelque sorte un raccourci local de la commande django-admin.pyqui prend encharge la configuration de votre projet. Vous pouvez dsormais oublier la commande django-admin.py, elle ne sert en ralitqu' crer des projets, tout le reste se fait via manage.py. Bien videmment, n'ditez pas ce fichier non plus.

    Votre projet tant cr, pour vous ass urer que tout a t correctement effectu jusqu' maintenant, vous pouvez lancer le serveurde dveloppement via la commande python manage.py runserver :

    Code : Console

    $ python manage.py runserverValidating models...

    0 errors foundMarch 04, 2013 - 20:31:54Django version 1.5, using settings 'crepes_bretonnes.settings'Development server is running at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.

    Cette console vous donnera des informations, des logs (quelle page a t accde et par qui) et les exceptions de Python lancesen cas d'erreur lors du dveloppement. Par dfaut, l'accs au s ite de dveloppement se fait via l'adresse

    http://localhost:8000. Vous devriez obtenir quelque chose comme la figure suivante dans votre nav igateur :

    Votre premire page Django

    Si ce n'est pas le cas, assurez-vous d'avoir bien respect toutes les tapes prcdentes !

    Au passage, manage.py propose bien d'autres sous-commandes, autres que runserver . Une petite liste est fournieavec la sous-commande help :

    Code : Console

    python manage.py help

    Toutes ces commandes sont expliques dans une annexe, donc nous vous invitons la survoler de temps en temps, au fur et mesure que vous avancez dans ce cours, et nous reviendrons s ur certaines d'entre elles dans certains chapitres. Il s'agit l d'unoutil trs puissant qu 'il ne faut surtout pas sous-es timer. Le dveloppeur Django y a recours quasiment en permanence, d'ol'intrt de savoir le manier correctement.

    Dveloppez votre site web avec le framework Django 14/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    17/208

    Configurez votre projetAvant de commencer crire des applications Django, configurons le projet que nous venons de crer. Ouvrez le fichiersettings.pydont nous avons parl tout l'heure. Il s'agit d'un simple fichier Python avec une liste de variables que vouspouvez modifier votre guise. Voici les plus importantes :

    Code : Python

    DEBUG =TrueTEMPLATE_DEBUG =DEBUG

    Ces deux variables permettent d'indiquer si votre s ite web est en mode debug ou pas. Le mode de dbogage affiche desinformations pour dboguer vos applications en cas d'erreur. Ces informations affiches peuvent contenir des donnes sensiblesde votre fichier de configuration. Ne mettez donc jamais DEBUG =Trueen production !

    Le tuple ADMINS, qui est par dfaut vide, est cens contenir quelques informations propos des gestionnaires du site (nom etadresse e-mail). L'adresse e-mail servira notamment envoyer les erreurs rencontres par les visiteurs de votre s ite enproduction. En voici un exemple :

    Code : Python

    ADMINS =( ('Maxime Lorant', '[email protected]'), ('Mathieu Xhonneux', '[email protected]'),)

    La configuration de la base de donnes se fait dans le dictionnaire DATABASES. Nous conseillons pour le dveloppement locall'utilisation d'une base de donnes SQLite. L'avantage de SQLite comme ges tionnaire de base de donnes pour le dveloppementest simple : il ne s'agit que d'un simple fichier. Il n'y a donc pas besoin d'installer un service part comme MySQL ; Python etDjango se chargent de tout. Si vous n'avez aucune ide de ce qu'es t rellement une base de donnes SQLite, n'ayez aucune

    crainte, le prochain chapitre vous expliquera en dtail en quoi elles cons istent et comment elles fonctionnent.

    Voici la configuration nces saire pour l'utilisation de SQLite :

    Code : Python

    DATABASES ={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'database.sql',

    'USER': '','PASSWORD': '',

    'HOST': '',

    'PORT': '', }}

    Modifiez le fuseau horaire et la langue de l'administration :

    Code : Python

    TIME_ZONE ='Europe/Paris'LANGUAGE_CODE ='fr-FR'

    TEMPLATE_DIRSest un simple tuple contenant les listes des dossiers vers les templates. Nous avons cr un dossiertemplates la racine de notre projet tout l'heure, incluons-le donc ici :

    Code : Python

    Dveloppez votre site web avec le framework Django 15/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    18/208

    TEMPLATE_DIRS =( "/home/crepes/crepes_bretonnes/templates/")

    Finalement, pour des raisons pratiques qui seront explicites par la suite, ajoutons une option qui permet de complterautomatiquement les URL par un s lash ( / ) la fin de celles-ci, si celui-ci n'est pas dj prsent. Vous en comprendrez l'utilitlorsque nous aborderons le routage d'URL :

    Code : Python

    APPEND_SLASH =True # Ajoute un slash en fin d'URL

    Voil ! Les variables les plus importantes ont t expliques . Pour que ce ne soit pas indigeste, nous n'avons pas tout trait, il enreste en effet beaucoup d'autres. Nous reviendrons s ur certains paramtres plus tard. En attendant, si une variable vous intrigue,n'hsitez pas lire le commentaire (bien qu 'en anglais) ct de la dclaration et vous rfrer la documentation en ligne.

    Crons notre premire applicationComme nous l'avons expliqu prcdemment, un projet se compose de plusieurs applications , chacune ayant un but bien prcis(systme d'actualits , galerie photos). Pour crer une application dans un projet, le fonctionnement es t s imilaire la crationd'un projet : il suffit d'utiliser la commande manage.py avec startapp , l'intrieur de votre p rojet. Pour notre s ite sur lescrpes bretonnes, crons un blog pour publier nos nouvelles recettes :

    Code : Console

    python manage.py startapp blog

    Comme pour startproject , startapp cre un dossier avec plusieurs fichiers l'intrieur. La s tructure de notre projetressemble ceci :

    Code : Autre

    crepes_bretonnes/ manage.py crepes_bretonnes/ __init__.py settings.py urls.py wsgi.py blog/ __init__.py

    models.py tests.py views.py

    Les noms des fichiers sont relativement vidents :

    models.pycontiendra vos modles ;tests.pypermet la cration de tests unitaires (un chapitre y est consacr dans la quatrime partie de ce cours) ;views.pycontiendra toutes les vues de votre application.

    partir de maintenant, nous ne parlerons plus des fichiers __init__.py, qui ne sont l que pour indiquer que notredossier est un module Python. C'est une spcificit de Python qui ne concerne pas directement Django.

    Dernire petite chose, il faut ajouter cette application au projet. Pour que Django considre le sous-doss ierblogcomme uneapplication, il faut donc l'ajouter dans la configuration.

    Dveloppez votre site web avec le framework Django 16/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    19/208

    Retournez dans settings.py, et cherchez la variable INSTALLED_APPS. Tout en conservant les autres applicationsinstalles, ajoutez une chane de caractres avec le nom de votre application. Au passage, dcommentez l'applicationdjango.contrib.admin, il s'agit de l'application qui gnre automatiquement l'administration et dont nous nousoccuperons plus tard.

    Votre variable devrait ressembler quelque chose comme ceci :

    Code : Python

    INSTALLED_APPS =( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'blog',)

    En rsum

    L'administration de projet s'effectue via la commande python manage.py . Tout particulirement, la cration d'unprojet se fait via la commande django-admin.py startproject mon_projet . la cration du projet, Django dploie un ensemble de fichiers, facilitant la fois la s tructuration du projet et s aconfiguration.Pour tester notre projet, il est poss ible de lancer un serveur de tes t, via la commandepython manage.py runserver , dans le dossier de notre projet. Ce serveur de test ne doit pas t re utilis en

    production.Il est ncessaire de modifier le settings.py, afin de configurer le projet selon nos besoins. Ce fichier ne doit pas trepartag avec les aut res membres ou la production, puisqu 'il contient des donnes dpendant de votre installation, commela connexion la base de donnes.

    Dveloppez votre site web avec le framework Django 17/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    20/208

    Les bases de donnes et DjangoPour que vous puissiez enregistrer les donnes de vos visiteurs, l'utilisation d'une base de donnes s 'impose. Nous allons dansce chapitre expliquer le fonctionnement d'une bas e de donnes , le principe des requtes SQL et l'interface que Django proposeentre les vues et les donnes enregistres. la fin de ce chapitre, vous aurez assez de connaissances thoriques pourcomprendre par la suite le fonctionnement des modles.

    Une base de donnes, c'est quoi ?Imaginez que vous souhaitiez classer sur papier la liste des films que vous possdez la maison. Un film a plusieurscaractristiques : le titre, le rsum, le ralisateur, les acteurs principaux, le genre, l'anne de sortie, une apprciation, etc. Il estimportant que votre mthode de classement permette de diffrencier trs proprement ces caractrist iques. De mme, vous deveztre srs que les caractristiques que vous crivez sont correctes et homognes. Si vous crivez la date de s ortie une fois enutilisant des chiffres, puis une autre fois en utilisant des lettres, vous perdez en lisibilit et risquez de compliquer les choses.

    Il existe plusieurs mthodes de classement pour trier nos films, mais la plus simple et la plus efficace (et laquelle vous avezsrement d penser) est tout s implement un tableau ! Pour class er nos films, les colonnes du tableau renseignent les diffrentescaractristiques qu'un film peut avoir, tandis que les lignes reprsentent toutes les caractristiques d'un mme film. Par exemple :

    Titre Ralisateur Anne de sortie Note (sur 20)

    Pulp Fiction Quentin Tarantino 1994 20

    Inglorious Basterds Quentin Tarantino 2009 18

    Holy Grail Monty Python 1975 19

    Fight Club David Fincher 1999 20

    Life of Brian Monty Python 1979 17

    Le classement par tableau est trs pratique et s imple comprendre. Les bases de donnes s 'appuient sur cette mthode de tripour enregistrer et classer les informations que vous spcifierez.

    Une base de donnes peut contenir plusieurs tableaux, chacun servant enregistrer un certain type d'lment. Par exemple, dans

    votre base, vous pourriez avoir un tableau qui recensera vos utilisateurs, un autre pour les articles, encore un autre pour lescommentaires, etc.

    En anglais, tableau es t traduit par table. Cependant, beaucoup de ressources francophones utilisent pourtant lemot anglais table pour ds igner un tableau, caus e de la prpondrance de l'anglais dans l'informatique. partir demaintenant, nous utiliserons galement le mot table pour ds igner un tableau dans une base de donnes.

    Nous avons voqu un autre point important de ces bases de donnes , avec l'exemple de la date de sortie. Il faut en effet quetoutes les donnes dans une colonne s oient homognes. Autrement dit, elles doivent avoir un mme type de donnes : entier,chane de caractres , texte, boolen, date Si vous enregistrez un texte dans la colonne Note, votre code vous renverra uneerreur. Ds lors, chaque fois que vous irez chercher des donnes dans une table, vous serez srs du type des variables que vousobtiendrez.

    Le langage SQL et les gestionnaires de base de donnesIl existe plusieurs programmes qui s'occupent de grer des bases de donnes. Nous les appelons, tout naturellement, desgestionnaires de bases de donnes (ou SGBD pour systmes de gestion de bases de donnes ). Ces derniers s'occupentde tout : cration de nouvelles tables, ajout de nouvelles entres dans une table, mise jour des donnes, renvoi des entresdj enregistres, etc. Il y a normment de SGBD, chacun avec des caractrist iques particulires. Nanmoins, ils se divisent endeux grandes catgories : les bases de donnes SQL et les bases de donnes non-SQL. Nous allons nous intresser la premirecatgorie (celle que Django utilise).

    Les gestionnaires de bas es de donnes SQL sont les plus populaires et les plus utiliss pour le moment. Ceux-ci reprennentl'utilisation du classement par tableau tel que nous l'avons vu. L'acronyme SQL signifie Structured Query Language , ouen franais langage de requtes structures . En effet, lorsque vous souhaitez demander au SGBD toutes les entres d'unetable, vous devez communiquer avec le serveur (le programme qui sert les donnes ) dans un langage qu'il comprend. Ainsi, sipour commander un caf vous devez parler en franais, pour demander les donnes au gest ionnaire vous devez parler en SQL.

    Voici un simple exemple de requte SQL qui renvoie toutes les entres de la table filmsdont le ralisateur doit tre QuentinTarantino et qui sont tries par date de sortie :

    Code : SQL

    Dveloppez votre site web avec le framework Django 18/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    21/208

    SELECTtitre, annee_sortie, note FROMfilmsWHERErealisateur="Quentin Tarantino"ORDERBYannee_sortie

    On a dj vu plus simple, mais voil comment communiquent un serveur SQL et un client. Il existe bien d'autres commandes (unepour chaque type de requte : slection, mise jour, suppress ion) et chaque commande possde ses paramtres.

    Heureusement, tous les SGBD SQL parlent peu prs le mme SQL, c'est--dire qu'une requte utilise avec un gestionnairefonctionnera galement avec un autre. Nanmoins, ce point es t assez thorique, car mme si les requtes ass ez basiquesmarchent peu prs partout, les requtes plus pointues et avances commencent diverger selon le SGBD, et si un jour vousdevez changer de ges tionnaire, nul doute que vous devrez rcrire certaines requtes. Django a une solution pour ce genre desituations, nous verrons cela par la suite.

    Voici quelques gestionnaires SQL bien connus (dont vous avez srement dj d voir le nom quelque part) :

    MySQL : gratuit, probablement le plus connu et le plus utilis travers le monde ;PostgreSQL : gratuit, moins connu que MySQL, mais possde quelques fonctionnalits de plus que ce dernier ;Oracle Database : gnralement utilis dans de grandes entreprises , une version gratuite existe, mais es t trs limite ;Microsoft SQL Server : payant, dvelopp par Microsoft ;SQLite : trs lger, gratuit, et trs simple ins taller (en ralit, il n'y a rien installer).

    Lors de la configuration de votre projet Django dans le chapitre prcdent, nous vous avons conseill d'utiliser SQLite. Pourquoi? Car contrairement aux autres SGBD qui ont besoin d'un serveur lanc en permanence pour traiter les donnes , une bas e dedonnes SQLite consiste en un simple fichier. C'est la bibliothque Python (nomme sqlite3) qui se chargera de modifier etrenvoyer les donnes de la bas e. C'est trs utile en dveloppement, car il n'y a rien installer, mais en production mieux vaututiliser un SGBD plus performant comme MySQL.

    La magie des ORMApprendre le langage SQL et crire ses propres requtes est quelque chose d'ass ez difficile et contraignant lorsque nousdbutons. Cela prend beaucoup de temps et es t assez rbarbatif. Heureusement, Django propose un systme pour bnficier desavantages d'une base de donnes SQL sans devoir crire ne serait-ce qu'une seule requte SQL !

    Ce type de s ystme s 'appelle ORM pour object-relationnal mapping. Derrire ce nom un peu barbare se cache un

    fonctionnement simple et trs utile. Lorsque vous crez un modle dans votre application Django, le framework vaautomatiquement crer une table adapte dans la base de donnes qui permettra d'enregistrer les donnes relatives au modle.

    Sans entrer dans les dtails (nous verrons cela aprs), voici un modle simple qui reviendra par la suite :Code : Python

    classArticle(models.Model): titre =models.CharField(max_length=100) auteur =models.CharField(max_length=42) contenu =models.TextField(null=True) date =models.DateTimeField(auto_now_add=True, auto_now=False,verbose_name="Date de parution")

    partir de ce modle, Django va crer une table blog_article( blog tant le nom de l'application dans laquelle le modleest ajout) dont les champs seront titre, auteur, contenuet date. Chaque champ a s on propre type (tel que dfini dansle modle), et ses propres paramtres. Tout cela se fait, encore une fois, sans crire la moindre requte SQL.

    La manipulation de donnes est tout aussi simple bien videmment. Le code suivantCode : Python

    Article(titre="Bonjour", auteur="Maxime", contenu="Salut").save()

    crera une nouvelle entre dans la base de donnes . Notez la relation qui se cre : chaque instance du modle Articlequise cre correspond une entre dans la table SQL. Toute manipulation des donnesdans la basese fait depuis des objetsPython , ce qui est bien plus intuitif et simple.

    De la mme faon, il est pos sible d'obtenir toutes les entres de la table. Ainsi le code suivant

    Dveloppez votre site web avec le framework Django 19/205

    www.siteduzero.com

    http://www.siteduzero.com/
  • 7/21/2019 Developpez Votre Site Web Avec Le Framework Django

    22/208

    Code : Python

    Article.objects.all()

    renverra des instances d'Article, une pour chaque entre dans la table, comme le schmatise la figure suivante :

    Fonctionnement de l'ORM de Django

    Pour conclure, l'ORM est un systme trs flexible de Django qui s'insre parfaitement bien dans l'architecture MVT que nousavons dcrite prcdemment.

    Le principe des cls trangresPour terminer ce chapitre, nous allons aborder une dernire not ion thorique relative aux bases de donnes SQL, il s'agit des clstrangres (ouForeign Keysen anglais).

    Reprenons notre exemple de tout l'heure : nous avons une table qui recense plusieurs films. Imaginons maintenant que noussouhaitions ajouter des donnes s upplmentaires, qui ne concernent pas les films mais les ralisateurs. Nous voudrions parexemple ajouter le pays d'origine et la date de naiss ance des ralisateurs. tant donn que certains ralisateurs reviennentplusieurs fois, il serait redondant d'ajouter les caractrist iques des ralisateurs dans les caractrist iques des films. La bonnesolution ? Crer une nouvelle table qui recensera les ralisateurs et ajouter un lienentre les films et les ralisateurs.

    Lorsque Django cre une nouvelle table depuis un modle, il va ajouter un autre champ qui n'est pas dans les attributs de laclasse. Il s'agit d'un champ tout simple nomm ID(pour identifiant , synonyme ici de cl ), qui contiendra un certainnombre unique l'entre, et qui va croissant au fil des entres. Ainsi, le premier ralisateur ajout aura l'identifiant 1, le deuximel'identifiant 2, etc.

    Voici donc quoi ress emblerait notre table des ralisateurs :

    ID Nom Pays d'origine Date de naissance

    1 Quentin Tarantino USA 1963

    2 David Fincher USA 1962

    3 Monty Python Grande Bretagne 1969

    Jusqu 'ici, rien de spcial part la nouvelle colonne IDin