Django (framework)
Pour les articles homonymes, voir Django.
Django est un framework open-source de dveloppement
web en Python. Il a pour but de rendre le dveloppement
web 2.0 simple et rapide. Pour cette raison, le projet a
pour slogan Le framework web pour les perfectionnistes
sous pression . Dvelopp en 2003 pour le journal local
de Lawrence (Kansas), Django a t publi sous licence
BSD partir de juillet 2005.
Depuis juin 2008, la Django Software Foundation soccupe du dveloppement et de la promotion du framework. En plus de cette promotion rgulire, des confrences entre dveloppeurs et utilisateurs de Django sont
organises deux fois par an depuis 2008. Nommes DjangoCon, une se droule en Europe et l'autre aux tats-Unis.
Plusieurs sites grand public sont dsormais fonds sur
le framework, dont Pinterest[4] , Instagram[5] ou encore
Mozilla[6] .
Principes
Django est un framework qui sinspire du principe MVC
ou MTV (la vue est gre par un template) compos de
trois parties distinctes :
Capture d'cran de l'interface d'administration.
1. Un langage de templates exible qui permet de gnrer du HTML, XML ou tout autre format texte ;
un systme labor de traitement des formulaires
muni de widgets permettant d'interagir entre du
HTML et une base de donnes. De nombreuses possibilits de contrles et de traitements sont fournies ;
2. Un contrleur fourni sous la forme d'un remapping
d'URL base d'expressions rationnelles ;
3. Une API d'accs aux donnes est automatiquement
gnre par le framework compatible CRUD. Inutile d'crire des requtes SQL associes des formulaires, les requtes SQL sont gnres automatiquement par l'ORM.
un framework de cache web pouvant utiliser direntes mthodes (MemCached, systme de chier,
base de donnes, personnalis) ;
le support de classes intermdiaires (middleware)
qui peuvent tre places des stades varis du traitement des requtes pour intgrer des traitements particuliers (cache, internationalisation, accs) ;
En plus de l'API d'accs aux donnes, une interface
d'administration fonctionnelle est gnre depuis le modle de donnes. Un systme de validation des donnes
entres par l'utilisateur est galement disponible et permet d'acher des messages d'erreurs automatiques.
un support complet d'Unicode.
Par framework, Django peut tre considr comme une
bote outils o chaque module peut fonctionner de faon
un serveur web lger permettant de dvelopper et indpendante.
tester ses applications en temps rel sans dploie- Un exemple de cette modularit est la plate-forme de dment ;
veloppement Google App Engine, o l'ORM de base a t
Sont galement inclus :
remplac par une API sur les BigTable de Google. Guido
Van Rossum, le crateur du langage Python, a activement
particip cette plate-forme.
Histoire
Le framework a t originellement dvelopp pour un
journal local de la ville de Lawrence, dans le Kansas
partir de 2003, par Adrian Holovaty (en) et Simon Willison (en)[7],[8],[9] . L'ide d'origine du framework tait de
permettre de dvelopper des sites web complets, interfacs avec une base de donnes, dans un laps de temps
trs court[9] . Le but de Django l'origine est de rpondre
aux contraintes des journalistes : l'administration gnre par le framework permet ainsi un dveloppement ais de fonctionnalits ax contenu . Le framework se
voulait galement accessible, an d'viter le recrutement
d'experts en dveloppement pour les journaux[9] . Le framework a t nomm ainsi en souvenir de Django Reinhardt, musicien de jazz[7],[8] .
FORCES ET FAIBLESSES DE DJANGO
1.x.0, o x est incrment par rapport la version
prcdente et apporte de nouvelles fonctionnalits
et ventuellement des incompatibilits avec les versions prcdentes ;
Des correctifs de scurit et de bugs sont fournis
sous la forme 1.x.y, sans ajouter de nouvelles fonctionnalits et se veut rtrocompatible.
En juin 2015, la suite d'un sondage et des discussions
entre dveloppeurs, une feuille de route est formalise,
avec un rythme de publication facilitant la maintenance
des projets et des applications tierces[12] . Une nouvelle
version du framework est dsormais publie tous les huit
mois, avec une long term support (LTS) tous les trois versions, c'est--dire tous les deux ans. Ces versions bncient de mises jour de scurit pendant une priode d'au
moins trois ans[17] . La numrotation des versions est par
consquent revue, permettant une maintenance plus aise
pour les utilisateurs du framework : la version suivant une
LTS entranera la suppression des lments dprcis depuis la prcdente LTS et commencera un nouveau cycle
En 2005, l'agence de presse dcide de publier le frame- de version majeure[12],[18] . Ainsi, partir de Django 2.0,
work au public, sous la licence BSD[7] . C'est depuis cette les versions seront 2.1, 2.2 LTS, 3.0, 3.1, 3.2 LTS, etc.
ouverture que sa notorit augmente. Il sera repris plus
Chacune de ces versions est, ou a t, mise jour dutard, en juin 2008 par la fondation Django Software[10]
rant son support, via des micro-releases[21] . Par exemple,
qui maintient encore aujourd'hui la communaut et le dla version 1.2 a eu sept mises jour, corrigeant de nomveloppement du framework. la suite de cette reprise, la
breux bugs et failles de scurit. Ces versions n'ajoutent
[11]
version 1.0 du framework sort quelques mois plus tard .
pas de fonctionnalits et garantissent une compatibilit
partir de cette version, les mises jour se stabilisent
identique la version mineure associe (sauf cas particuune version majeure annuelle.
liers).
En juin 2015, une politique de publication est mise au
point, pour sortir une nouvelle version tous les huit mois,
et une version avec un support tendu tous les deux 3 Forces et faiblesses de Django
ans[12] . cette occasion, il est annonc que le support
de Python 2 ne serait probablement assur que jusqu' la
3.1 Les forces
version 1.11, qui sera la dernire de la branche 1.x[12] .
2.1
Historique des versions
Aprs la mise disposition public par le journal Lawrence, le dveloppement open-source de Django commence la version 0.90. Les premires versions sont
numrots jusqu' 0.96 et ont pour but de stabiliser
l'interface de programmation principale, et chaque version apporte donc de nombreuses modications dans la
faon d'utiliser le framework[13] . La sortie de la version
1.0 marque le dbut de la maturit du framework, avec
une interface qui se veut compatible avec les versions
futures[14] . Un guide est publi pour permettre aux utilisateurs de migrer de Django 0.96 1.0[15] .
Pendant le dveloppement de la branche Django 1.x ,
le cycle de dveloppement n'a pas de rythme dni
mais respecte la convention de nommage de version
suivante[16] :
Chaque nouvelle version majeure est numrote
Les vues gnriques : il sagit de vues permettant de traiter les cas les plus courants du
dveloppement web de manire trs simple. Elles
permettent par exemple de lister des objets avec
une gestion de la pagination, de lister des objets organiss par date avec des URL du type
(anne)/(mois)/(jour)/lment acher. Plus
d'informations sont disponibles dans la documentation sur les vues gnriques.
Le systme d'authentication
La cration de pages statiques
La documentation : Django possde une trs bonne
documentation anglaise. (dont un eort de traduction en franais de l'API stabilis[22] ) Cette documentation, au format ReStructuredText (ReST), est
compatible avec le projet Sphinx.
Les exceptions : les exceptions et backtraces
Python sont bien gres dans Django et appa-
3
raissent dans les pages d'erreur 500, en mode dbogage. On peut avoir une bonne ide des variables d'environnement et du code ayant provoqu l'exception. Des eorts sont mens pour inclure d'autres outils comme la barre de dbogage de
Symfony (Django Debug Toolbar).
3.2
Les faiblesses
L'AJAX : Django en tant que framework ne permet pas, seul, l'intgration d'AJAX ct client
web. Ceci est un choix de l'quipe de dveloppement qui prfre laisser l'utilisateur le choix
de la bibliothque AJAX combiner avec Django (MooTools, Prototype, MochiKit (en), jQuery,
dojo, ext, etc.)[23] .
4.1.1 En Europe
Le lieu de l'vnement change chaque anne, an de pouvoir toucher le maximum de personnes sur plusieurs annes. Des aides sont galement fournies pour les personnes en dicult nancire, voulant tout de mme
participer, grce aux dons des entreprises partenaires de
l'vnement ainsi que des autres participants. Regroupant
plus de 300 dveloppeurs tous les ans[25] , l'vnement accueille aussi bien des Europens que des personnes des
autres continents.
partir de 2015, les DjangoCon Europe mettent l'accent
sur la diversit, en incitant les personnes minoritaires
dans le domaine de l'informatique (femmes, handicaps, personnes ges) venir participer et partager leurs connaissances[26] . Pour son dition de 2016,
l'organisation se targue d'avoir reu 48 % de propositions
de confrences venant de femmes et qu'aprs slection 54
% des confrenciers seront des femmes[27] .
Migrations : Avant la version 1.7[24] , il n'y avait
pas d'outil intgr au framework pour grer les migrations lors des modications des modles. Mais 4.1.2 Aux tats-Unis
des applications Django permettaient de pallier ce
manque, notamment South.
Cette section est vide, insusamment dtaille ou
incomplte. Votre aide est la bienvenue pour renseigner
les dirences par rapport aux DjangoCon Europe !
Communaut
Plusieurs organisations gravitent autour du framework
an d'aider les utilisateurs prendre en main le frame- 5 Voir aussi
work. Il existe notamment les DjangoCon, vnement
compos de confrences et d'ateliers autour du frame- 5.1 Articles connexes
work, mais galement des associations an d'attirer les
personnes rarement impliques dans l'informatique. C'est
Python
le cas de DjangoGirls, qui invite les femmes venir sinitier Django et au Python de manire gnrale.
Google App Engine, Zope
Modle-Vue-Contrleur
4.1
DjangoCon
Des confrences sont tenues tous les ans pour les dveloppeurs et utilisateurs de Django, appeles DjangoCon.
Des vnements distincts ont lieu aux tats-Unis et en
Europe. Ces vnements sont composs de plusieurs parties :
les confrences : pendant deux trois jours, des bnvoles prsentent un point particulier du framework, des usages spciques, un retour d'exprience,
etc.
les sprints : les jours suivants les confrences, des
sessions de programmation sont organises, pour
tous niveaux, an de parfaire sa maitrise du framework. Des tutoriaux sont mis en place pour initier
les nouveaux utilisateurs.
Django CMS
6 Bibliographie
(en) The Denitive Guide to Django - 1re dition en
dcembre 2007, 2de dition en juillet 2009. Disponible en ligne sur [Link].
(en) Daniel et Audrey Roy Greenfeld, Two Scoops of
Django : Best Practices For Django 1.8 - mai 2015.
Disponible en ligne sur [Link]
(ISBN 978-0981467344)
(fr) Maxime Lorant et Mathieu Xhonneux, Dveloppez votre site web avec le framework Django - 30 avril 2013. Disponible en ligne sur
OpenClassrooms. (ISBN 979-10-90085-48-0)
Liens externes
(fr) Site de la communaut francophone
NOTES ET RFRENCES
[18] (en) Djangos release process - Deprecation policy , sur
[Link] (consult le 26 juin 2015)
[19] (en) Tim Graham, Django 1.8 released , sur [Link], 1er avril 2015 (consult le 2 avril 2015)
(fr) Cours complet sur Django dispens l'universit
de Picardie Jules Verne
[20] Djangos future, and Python 3
(en) Popularit du paquet python-django
(en) Django REST framework
Notes et rfrences
(en) Cet article est partiellement ou en totalit issu
de larticle de Wikipdia en anglais intitul Django
(web framework) (voir la liste des auteurs).
[21] (en) Micro releases sur la page Djangos release process
, sur [Link]
[22] [Link]
[23] (en) Page traitant de AJAX sur le Wiki du projet
[24] [Link]
schema-migrations-for-django
[25] Page Sponsorship du site ociel : This event will be
attended by over 300 Django developers from across the
world.
[1] [Link]
django-s-history
[26] (en) Diversity , sur [Link] (consult le 25
fvrier 2015)
[2] (en) Django 1.9.5 release notes
[27] Ola Sitarska, Announcing the results of Call for Speakers ! , sur DjangoCon Europe, 25 janvier 2016 (consult
le 26 janvier 2015).
[3] (en) Django 1.9.6 release notes
[4] What technologies were used to make Pinterest ?
[5] What Powers Instagram : Hundreds of Instances, Dozens
of Technologies
Portail de la programmation informatique
[6] Use of Python at Mozilla
Portail des logiciels libres
[7] (en) Introduction to Django : Djangos History , sur
Django Book (consult le 9 juillet 2015)
[8] Maxime Lorant et Mathieu Xhonneux, Crez vos applications web avec Django : Qu'est-ce que Django , sur
[Link] (consult le 9 juillet 2015)
[9] (en) Karen Dillon, Lawrence-born Django, which revolutionized website construction, celebrating its 10th anniversary , sur Lawrence Journal-World, 9 juillet 2015
(consult le 9 juillet 2015)
[10] Announcing the Django Software Foundation, consult le
13 aot 2012
[11] Django 1.0 released !, consult le 13 aot 2012
[12] (en) Tim Graham, Djangos Roadmap , sur [Link], 25 juin 2015 (consult le 26 juin 2015)
[13] (en) Django version 0.95 release notes , sur [Link], juillet 2006 (consult le 26 juin 2015)
[14] (en) 1.0 release notes , sur [Link] (consult
le 26 juin 2015)
[15] (en) 1.0 porting guide , sur [Link] (consult
le 26 juin 2015)
[16] (en) Djangos release process (Django 1.8) , sur [Link] (consult le 26 juin 2015)
[17] Long Term Support releases sur la page Djangos release
process
Sources, contributeurs et licences du texte et de limage
9.1
Texte
Django (framework) Source : [Link] Contributeurs : Traroth, ( :Julien :),
Maxlelubre, ArBaDaCarBa, JackAttack, Phe, Phe-bot, FabienSchwob, Fylip22, BrunoBord, Bob08, Cyberj, Edouard-lopez, Koko90, Poulos, Sherbrooke, Elg, Chobot, Zetud, Romanc19s, Gzen92, RobotQuistnix, YurikBot, Lydio, Askywhale, Gawel, Shawn, Silex6, Dadu,
Pautard, Jmax, Manu1400, PieRRoBoT, Erwin, Diti, Guilll, JnRouvignac, Phd0, Gilles.L, JAnDbot, Arkanosis, Blue Prawn, Nono64,
HariBot, Zorrobot, Nodulation, Ortholam, Ptbotgourou, Ssx`z, DaBot~frwiki, Lepsyleon, Dhatier, Hercule, DumZiBoT, SniperMask,
GLec, DragonBot, PicMirandole, Egoz, Crickxson, HerculeBot, Bubs wikibot, AkhtaBot, Luckas-bot, ChenzwBot, ArthurBot, Xqbot,
[Link], Al Maghi, Mquandalle, Lomita, TobeBot, RedBot, Cynddl, Dreadcast, EmausBot, Yolenoyer, Fractaliste, Fcarcena01,
WikitanvirBot, Djangojobs, [Link], Indeed, FDo64, NemesisIII, KLBot2, Metamorforme42, VFair, Beltranrubo, Gustavi, Addbot,
Mongos~frwiki, [Link], Zebulon84bot, Wikini et Anonyme : 44
9.2
Images
Fichier:Blue_pencil.svg Source : [Link] Licence : Public domain Contributeurs : File:Arbcom ru [Link] by User:VasilievVV with color change by user:Jarekt Artiste dorigine : User:VasilievVV and user:Jarekt
Fichier:Disambig_colour.svg Source : [Link] Licence : Public domain Contributeurs : Travail personnel Artiste dorigine : Bubs
Fichier:Django_default_page.png Source : [Link] Licence :
CC BY-SA 3.0 Contributeurs : Transfr de [Link] Commons par Ssx3max. Artiste dorigine : Ubernostrum sur Wikipedia anglais
Fichier:Django_logo.svg Source : [Link] Licence : Public domain
Contributeurs : [Link] Artiste dorigine : Django
Fichier:Django_useradmin.png Source : [Link] Licence : BSD
Contributeurs : Travail personnel Artiste dorigine : Wilson Miner and others.
Fichier:Info_Simple.svg Source : [Link] Licence : Public domain
Contributeurs : Travail personnel Artiste dorigine : Amada44
Fichier:Nuvola_apps_emacs.png Source : [Link] Licence :
LGPL Contributeurs : [Link] Artiste dorigine : David Vignoni
Fichier:Nuvola_apps_kcmsystem.svg Source : [Link]
Licence : LGPL Contributeurs : Own work based on Image:Nuvola apps [Link] by Alphax originally from [1] Artiste dorigine :
MesserWoland
Fichier:[Link] Source : [Link] Licence : GPL
Contributeurs : [Link] Artiste dorigine : [Link]
Fichier:Python_logo_and_wordmark.svg Source : [Link]
[Link] Licence : GPL Contributeurs : [Link] Artiste dorigine : [Link]
9.3
Licence du contenu
Creative Commons Attribution-Share Alike 3.0