Pourquoi choisir Django ?

Dernière mise à jour le 4 octobre 2015.

Pourquoi choisir Django ?

Une difficulté pour choisir une plateforme de développement web, réside dans le fait que bien qu’il existe une grande quantité d’informations techniques sur les CMS et les frameworks, il n’existe pourtant que très peu d’informations synthétiques à destination des décideurs. Bien sûr, les développeurs ont souvent des préférences, mais ce sont les chefs de produits et les chef de projets qui prennent en général la décision finale concernant la plate-forme à utiliser pour déployer un site riche & complexe. Cela est problématique car le choix d’une plate-forme web est plus ou moins définitif - en tout cas le changement / la migration est difficile à réaliser une fois le projet lancé.

Peut être avez vous entendu parler de Django ces dernier temps, c’est une technologie qui à la vent en poupe et s’adapte parfaitement à tout type de développement web.  

Django est un framework web, nommé d’après le légendaire guitariste de jazz, Django Reinhardt. On prononce « jango », le ‘D’ étant muet. Django est un framework web Python, permettant de développer rapidement des applications web, avec moins de code. Initialement développé par le journal de Lawrence, devenu open source, il est actuellement développé par la Django software fondation. Django rencontre un succès grandissant dans la communauté des développeurs.

Personnellement, j’ai découvert Django lors d’un projet ou ayant du utiliser une librairie Python, j’ai choisi, pour ne pas multiplier les langages dans le même projet, d’utiliser Django, un framework écrit également en Python et depuis j’en suis devenu un adepte.

Répondre à la question pourquoi Django, c’est répondre d’abord à une première question : pourquoi utiliser un framework web? Si l’on réponds oui à cette première question, ce que je vous engage à faire, indépendamment de Django, se pose alors une deuxième question : quel framework web choisir ?

La réponse à cette deuxième question est plus complexe et dépends de plusieurs facteurs. En premier, bien sur, il y a la qualité intrinsèque du framework et sa capacité à répondre à vos besoins. Mais il ne faut également pas sous estimer la capacité technique des équipes à le maitriser, les outils existant, la culture de l’entreprise, etc. Comme certains de ces aspects ne sont pas uniquement d’ordre technique, je vais me limiter aux fonctionnalités de Django et à la capacité technique des équipes, capacité qui peut bien souvent se résumer principalement à la maitrise et la connaissance d’un langage informatique en particulier. Django étant écrit en Python, la question peut être reformulée ainsi : pourquoi utiliser Python ?

Une fois répondu à ces deux questions préalables vient alors la troisième : pourquoi utiliser Django ? 

Je vais vous donner mon avis de développeur passionné de Django et tacher de vous convaincre. Mais en écrivant cet article, je sais que je manque forcément un peu d’objectivité car j’apprécie énormément ce produit et que de plus je viens de terminer un ouvrage sur je sujet. 

( http://www.editions-eni.fr/livres/django-industrialisez-vos-developpements-python/.dc37a035d6f3b68907750d3eae5824fe.html )

Pourquoi utiliser un framework WEB ?

Définissions d’abord le mot framework. En informatique, un framework est une boite à outil de composants logiciels cohérents. Les briques de base qui le compose (les composants logiciels), servent d’éléments structurels pour la création d’un logiciel. Ces briques de base servent à créer les fondations et les éléments d’architecture du logiciel.  Un framework est donc à destination des concepteurs et non des utilisateurs finaux. Un framework organise les outils et les composants logiciels qu’il fourni, selon un ou plusieurs plans d’architectures logicielles pré-établies.

Les principaux avantages des frameworks sont : la réutilisation du code, la standardisation du cycle de vie du logiciel (spécifications, développement, maintenance, évolutions), la formalisation dune architecture adaptée aux besoins et enfin ils capitalisent les développements antérieurs. Un framework est conçu pour aider les programmeurs dans leur travail, il permet d’augmenter (après apprentissage), la productivité des programmeurs qui l’utilisent et vise également à diminuer les coûts de maintenance.

Comment traduire framework en Français ? La traduction littérale est cadre de travail. Des tentatives de traduction du terme en français ont été faites, citons :« cadre d’applications », canevas ou encore cadriciel.

Il est primordial de bien distinguer un framework d'une librairie (bibliothèque logicielle) par : sa généricité et son caractère faiblement spécialisé, contrairement aux librairies qui sont en général spécialisées. Ainsi un framework peut contenir plusieurs libraires. Par contre, un framework peut être limité : à un langage particulier, à une plateforme particulière ou à un domaine particulier. A ce titre Django est spécialisé en Python et en création d’applications web, mais est « platform-indépendant ».

Avant de répondre pourquoi et comment utiliser un framework, regardons les alternatives. Pour simplifier, disons qu’il existe deux types d’alternatives :

- La première qui viens comme une évidence est : « pourquoi développer ? », alors qu’il existe d’excellents produits prêts à l’emploi disposant de nombreux plugins : des CRM, des sites de e-commerce prêts à l’emploi, des blogs, etc. De plus, beaucoup de ces produits étant open source, on pense pouvoir facilement les adapter aux besoins, n’est ce pas ? Nous avons voir cela.

- La deuxième solution étant d’écrire son site entièrement à la main, ou en utilisant des - librairies adaptées.

Regardons la première solution, qui est l’utilisation, par exemple d’un CMS comme Drupal ou wordpress. Dans ce cas, en utilisant un logiciel prêt à l’emploi, il est clair que l’on sera plus rapidement opérationnel qu’avec un développement spécifique (ça c’est trivial), mais également qu’en en utilisant un framework et hélas Django ne déroge pas à la règle. Seulement il existe un problème qui s’appelle : « le mur de la spécialisation ». Quel est ce mur ? Si votre projet sort quelque peu du cadre des fonctionnalités de base parfaitement remplies par un CMS (ou votre blog, site de e-commerce, …), alors vos couts d’adaptation de ce logiciel standard, malgré que celui ci soit open source, vont croitre de manière quasi exponentielle en fonction de la croissance de vos besoins !

Pourquoi ? Car, en choisissant un produit ayant un grand nombre de fonctionnalités et de plug-ins, avec lesquels on peut fournir rapidement un site et/ou une application web avec des caractéristiques standard, on choisi également un produit, qui aspire à être simple d’utilisation, pour pouvoir être utilisé par une majorité d’utilisateurs. Or cette simplicité a un coût : elle ce traduit par une réelle complexité interne. Cela signifie que si il est nécessaire d’intervenir dessus pour étendre les fonctionnalisées, des problèmes techniques de complexité croissante vont apparaitre entrainant un dérapage des couts de développement et de maintenance, qui vont exploser.

Avec un framework, comme Django, on est libre de construire ses propres fonctionnalités ou d’utiliser celles existantes, d’en ajouter ou non, de les modifier, etc… et ce de manière très simple. L’ensemble des cas de figures les plus courants sont immédiatement disponibles : CRUD, administration des utilisateurs, gestion des sessions, cookies, etc (back office pour Django mais nous y reviendrons)… Il existe l’équivalent de plugins :  chez Django se sont les applications. Enfin comme tout cela est réalisé par programmation, cet ensemble de fonctionnalités une fois intégré dans votre projet reste entièrement configurable et pourra respecter votre modèle de données et votre logique métier spécifique.

Enfin pour ce qui est du dernier point : le développement totalement spécifique par exemple en php, il n’y a malheureusement pas grand chose à dire. En effet si on obtiens certes une flexibilité totale en terme de spécifications et de fonctionnalités, cela se fera hélas au détriment des coûts et des délais, qui seront non seulement bien plus élevés que ceux d’un logiciel prêt à l’emploi, mais également que ceux d’un framework.

Alors comment obtenir le prix du prêt à porter et la qualité du sur mesure ? 

L’industrie à déjà répondu à ce paradoxe avec la notion de « sur mesure industriel », en informatique, la réponse tient en un mot : framework.

Pourquoi choisir Python ?

Dès que l’on aborde le choix d’un langage de programmation, les esprits s’échauffent, chaque chapelle défend becs et ongles SON langage et les passions reprennent le dessus. Commençons par quelques éléments en faveur de Python et également en sa défaveur 

- Python est le langage majoritairement choisi par les plus grandes universités américaines pour introduire la programmation informatique. (Lien) http://cacm.acm.org/blogs/blog-cacm/)

- En 2014 la croissance mensuelle des offres d’emploi Django et Python aux USA aurait été de 400 à 450%, je sais Python viens de loin, mais quand même …. 

( http://www.indeed.com/jobtrends?q=Java,+PHP,+Perl,+.Net,+Python&relative=1)

- Python implémente et permet d’utiliser les principaux paradigmes de programmation informatique, dont la programmation fonctionnelle, impérative, objet, compléter)

- Parce qu’il faut environ 40% de lignes de code en moins qu’en Java pour faire la même chose, …. et parce que c’est un vrai langage de programmation et pas un langage pour le web, non, je n’ai pas dit PHP !

Mais au fait Python est il vraiment mieux que PHP?

Oui trois fois oui ! Et ce, bien que PHP soit toujours le langage le plus populaire pour réaliser des sites, mais cela est presque entièrement du à une inertie historique - PHP ayant été le premier langage simple à utiliser pour réaliser des sites et de ce fait, de nombreux CMS ont été développé à cette époque. Comparé à Python, PHP est lent, verbeux, peu flexible, et difficile à débogguer. Parce qu'il est conçu pour sa facilité d'utilisation plutôt que pour la qualité du code, il est trop facile d'écrire du code insécure (présentant des failles de sécurité) ou du code spaghetti. Les frameworks PHP modernes améliorent beaucoup leur qualité de code, mais ces frameworks sont encore très en retard par rapport à Django en termes de fonctionnalités et de productivité.

La syntaxe de Python est claire et propre, cela raccourci le temps de développement et encourage les développeurs à penser de manière orientée objet. Autrement dit, un code propre est plus facile à écrire et plus facile à maintenir.

En terme de maturité PHP est encore au stade de l’ajout de fonctionnalités déjà présentes dans les autres langages, par exemple les espaces de noms 

- A cause de la richesse des librairies Python qui traitent d’à peu près tous les sujets.

- Parce que Python pratique le Duck typing (si ça vole comme un canard et que ça fait coin coin , alors c’est que c’est un canard).

- Pour l’introspection, comment peut on encore programmer sans cela !…. (Mais ça c’est un avis personnel).

- Pour l’excellent I.D.E. PyCharm (Jetbrains).

- Parce que Python tourne partout : on peut même remplacer le code javascript par Python et avoir (enfin !) le même code sur le client et le serveur ! Python permet de réaliser des applications Cloud, Windows, Mac, Web, Linux, Android et Iphone, etc….

- Parce que Python se marie parfaitement avec C/C++ ET Java.

- Parce que c’est le langage le plus utilisé sur Google AppEngine, devant Java.

- Parce que c’est un langage utilisé par de grands acteurs du web :

Yahoo Maps, Yahoo Groups,

Google, l’utilise pour de nombreux composants de ces robots (crawler/spider) et de son moteur de recherche. Source Slashdot.

Zope Corporation, Ultraseek, Linux Weekly News, ElasticHosts Cloud Server 

Mais au fait pourquoi Google à choisi Python ?

  • Python s’intègre parfaitement avec C & C++. Boost.Python permet par exemple uns intégration sans couture  (seamless) entre le deux langages.
  • La gestion Python des "threads"
  • Jython, Jython permet une intégration totale entre Python et java
  • Python est un langage qui peut être utilisé comme second langage même en l’absence de spécialiste (experts) du langage.

- Parce que c’est l’O.S. du cloud avec OpenStack !

Enfin parce que Python est utilisé dans de très nombreux domaines par de grandes entreprises et institutions  

Jeux utilisant Python: Battlefield 2, Crystal Space, Star Trek Bridge Commander

The Temple of Elemental Evil et Vampire: The Masquerade: Bloodlines

Civilization 4, QuArK (Quake Army Knife)

Graphismes : Industrial Light & Magic, Walt Disney Feature Animation, Caligari Corporation, Jasc Software, Paint Shop Pro.

Finance : Altis Investment Management, ABN AMRO Bank, Treasury Systems, Bellco Credit Union.

Sciences : National Weather Service, Los Alamos National Laboratory (LANL) Theoretical Physics Division, AlphaGene, Inc., LLNL, NASA, Swedish Meteorological and Hydrological Institute (SMHI), TV 4, Environmental Systems Research Institute (ESRI), Nmag Computational Micromagnetics, Objexx Engineering

Development logiciel : Object Domain, Pardus, Red Hat, SGI, Inc., MCI Worldcom, Nokia

Enseignement : University of California - Irvine, Delft University of Technology, Faculty of Aerospace Engineering, Delft, Netherlands, Smeal College of Business, The Pennsylvania State University, New Zealand Digital Library, IT Certification Exam preparation, SchoolTool

Business: Raven Bear Systems Corporation, Thawte Consulting, Advanced Management Solutions Inc., IBM, Arakn<E9>, RealNetworks, dSPACE, Escom, The Tiny Company, Nexedi, Piensa Technologies - Bufete Consultor de Mexico, Nektra, WuBook

Divers : Le site de la Central Intelligence Agency (CIA) 

Donc parce que l‘on peut tout faire avec ….. et que c’est agréable, puissant et élégant de l’utiliser.

En défaveur de Python, citons en vrac :

C’est un langage interprété. (Mais on peut le compiler, parfois …)

Les librairies python de qualité sont innombrables, mais tous les codes python que l’on trouve sur Internet ne sont pas de qualité industrielle.

Votre code source est accessible. Ce point particulier est un réel problème, si l’on souhaite protéger certaines parties vitales du code. Il faudra prendre en compte cela, en compilant certaines parties critiques du code.

Il existe trop de versions différentes de Python : Python2, Cython, Python3, Jython, PyPy, Ah ça c’est hélas bien vrai ! … mais d’une part elles ont toutes leur raisons pour exister et d’autre part des efforts importants d’harmonisation autour de Python 2.7 et Python 3 sont réalisés.

Bref, j’arrête la, et heureusement, vous avez le droit de préférer un autre langage !

Pourquoi Django? 

Avant de lister les avantages de Django, commençons tout d’abord par rassurer les décideurs sur la pérennité et la pertinence de Django. Django est un outil à la fois riche et puissant, il possède une documentation complète en anglais. Documentation qui est à jour, exhaustive et didactique, notons que la plus grande partie de cette documentation est traduite en Français (C.f. http://www.django-fr.org/), ainsi qu’une excellent livre aux éditions E.N.I (pub). Django est un projet actif supporté par la Django software foundation, qui bénéficie environ d’une mise à jour importante chaque année. Sa communauté d’utilisateurs est suffisamment vaste et active pour que vous trouviez toujours une réponse à vos questions, quelques qu’elles soient sur les forums, du moins sur les forums en anglais, notamment sur  sur stackoverflow. Il n’y a donc aucun obstacle à utiliser Django dans un environnement de production.

Qui utilise Django?

Django. Il est utilisé par de nombreux sites et organisations dont quelques sites majeurs d’internet citons : 

Instagram, Pinterest, disqus, bitbucket, l’admin d’open stak, les pages de support de Mozilla, le département des sciences de la NASA, The Onion, Mercedes Benz, Une partie du journal le Guardian, Le New York Times, le Washington Post, Certaines parties de Google, IWC (International Watch Company), Art Gallery of NSW, Le Musée d'Art Contemporain d’Australie, Certaines parties d’IKEA, …

Si je ne devais donner que quelques raisons d’utiliser Django je citerai les suivantes : 

  • Son architecture M.V.C. (*) : Modèle, Vue, Contrôleur. (*) Note : l’architecture MVC est appelée MTV chez Django (Model Template Vue)
  • Les vues génériques (class based views)
  • Son ORM (Object relationnel mapper)
  • Les formulaires automatiques et donc l’admin Django.

Et j’ajouterai que la conséquence de tout cela c’est : la rapidité du codage, un déploiement et une maintenance aisée.

Bien sur ce ne sont pas les uniques raisons d’utiliser Django, mais celles ci valent à elles seules vraiment la peine de regarder à quoi Django ressemble. Je vais revenir sur ces différents points en détail.

Django un framework ayant des points communs avec un CMS.

Dans la première partie de cet article j’ai développé en détail l’intérêt qu’il y à utiliser un framework par rapport à un CMS, mais l’idéal serait de concilier la facilité et la rapidité de mise en œuvre d’un CMS avec la puissance de personnalisation d’un framework. Cet point est important et il est particulièrement bien traité par Django et de plusieurs façons. D’une part le framework lui même intègre nativement de nombreuses applications que l’on trouve dans django.contrib. Ces applications peuvent être aisément « pluggées » dans un projet.  D’autre part, ces applications « de base » sont complétées, améliorées et étendues part de très nombreuses autres applications que l’on peut utiliser, la aussi, directement dans un projet. Un bémol cependant sur ce dernier point toutes les applications disponibles ne sont pas de qualité industrielle et certaines ont parfois quelques versions de retard prévoyez dans ce cas d’avoir à mettre les mains dans le cambouis. Pour se faire une idée de la richesse des applications / modules que l’on peut ajouter à Django, allez faire un tour sur le site DjangoPackages (https://www.djangopackages.com/) . A titre d’exemple citons : gestion de tags, de backends d’authentification (facebook, openid, …), blogs, cms, sites de commerce, modules de paiement, gestion des commentaires, agendas, etc…

Enfin en dernier point et non le moindre parmi toutes ces applications, il existe des CMS prêts à l’emploi, qui conservent le caractère configurable de Django.

C’est pour cela que l’on peut voir parfois des articles expliquant que Django est un framework « cms-like ».

Python

J’ai déjà développé ce point précédemment et je ne reviendrai pas dessus, mais je souhaite ajouter le point suivant : si par hasard, lors d’un développement, vous ne trouviez pas votre bonheur dans les applications Django existantes, sachez que grâce à Python vous pourrez sans problème utiliser une des innombrables librairies Python, pour traiter votre problème avec Django. Cette possibilité est particulièrement appréciable dès qu’il s’agit de domaines pointus comme : l’intelligence artificielle, le calcul scientifique, le traitement d’images, le big-data, le cloud, etc.

Architecture MVC / MTV

Django est un outil qui permet aux développeurs de travailler en parallèle des web designers, grâce au principe S.O.C. (separation of concerns) et à son architecture M.V.C. L’architecture modèle-vue-contrôleur (http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) est nommée M.T.V. dans Django (http://jeffcroft.com/blog/2007/jan/11/django-and-mtv/). Avec ce principe, les développeurs peuvent travailler avec une séparation quasi-complète entre la logique de programmation, la structure des données et la logique d'affichage. Le MVC / MTV est considéré comme un aspect essentiel de la pratique de programmation moderne et Django est MVC dès ses fondations.

Système de templates (modèles)

Django est célèbre pour son système de templates basées et leur mécanisme d’héritage. Héritage qui rend presque trivial de créer des templates imbriqués et l’utilisation de templates différents pour les différentes parties d’un site, et ainsi d'éliminer toute redondance dans le code des templates. C’est un vrai bonheur de travailler ainsi. Le système de templates Jinja2 de syntaxe très proche, peut également être utilisé en complément ou en remplacement des templates natives de Django 

Orientation objet

Python (le langage sur lequel Django est bâti) est extrêmement orienté objet , et donc Django également. Cela signifie que les objets manipulant les données, les QuerySets, les variables, les modèles et les arguments peuvent être manipulé par vos codes facilement. Cela rend plus facile de réduire ou d'éliminer complètement code redondant (Django souscrit au principe D.R.Y. (http://docs.djangoproject.com/en/dev/misc/design-philosophies). A titre de comparaison on considère généralement qu’un CMS comme Drupal n'est pas orienté objet.

ORM

Avec Django, un développement débute par la définition des modèles de données décrivant l’organisation interne du site. Par exemple, cela pourrait concerner : des équipements, et des horaires et réservations pour des salles, ou encore : des professeurs, des étudiants, des cours et des évaluations, etc. tous ces éléments ayant des types de données et des relations interdépendantes.

A partir de ces modèles de données, les tables de la base de données seront générées automatiquement, et Django sera "au courant" des relations entre les données. Pour interroger pour divers ensembles de données, le développeur Django utilise ce qu'on appelle un ORM « objet relationnal mapping ». Ainsi, nul besoin d’écrire des requêtes SQL, le développeur Django écrit  ainsi :

etudiants = Etudiant.objects.filter (uv = Math1)

Donnera en SQL en gros cela :

SELECT * FROM mon_application_etudiant 

WHERE uv = <valeur de Maths1.id> ;

Dans un exemple simple comme celui-ci, il n'y a pas de réelle économies sur l'écriture du code SQL équivalent. Mais lorsque les requêtes deviennent complexes, SQL devient difficile et est source d’erreurs alors que le code Django reste simple et lisible. Lorsque les développeurs peuvent gagner du temps et réduire les erreurs, on gagne de l’argent. Notons que Python possède un ORM généralement considéré comme plus puissant que celui de Django sqlAlchemy, mais celui ci n’est pas directement utilisable dans Django, l’ORM de Django, bien que moins puissant que sqlAlchemy, s’avère généralement bien adapté au développement web.

 

De l’ORM Django, découlent deux fonctionnalisées particulièrement appréciées des développeurs:

L’admin Django

Django est livré avec une interface d'administration auto-générative qui est si performante et si conviviale que cela fonctionne quasiment comme un CMS pour la grande majorité des projets. L'interface d'administration auto-générative peut être modifié et personnalisée, ou simplement ignorée. Il s'agit d'un composant facultatif - vous êtes libre de l'utiliser, le modifier, ou de l'ignorer complètement. L’admin  Django est tellement performant qu’il n’est pas rare de voir des projets PHP ou l’on utilise l’admin Django pour administrer le site !

La création de formulaires (CRUD) automatiques à partir des modèles.

Ca aussi les développeurs adorent car ils aiment bien travailler moins.  

Déploiement

Les systèmes basés sur Java ou PHP ont une légère longueur d'avance dans ce domaine, car pratiquement chaque hébergeur propose PHP. En revanche, la mise en place d'un système Django sur un serveur demandera un certain niveau de technicité, technicité non maitrisée par le développeur web de base. Heureusement, un nombre croissant d'hébergeurs proposent de l'hébergement Django, ce qui fait que ce problème est mineur. Enfin Django reste la technologie idéale pour des projets ayant un fort trafic, les sites Web en évolution rapide, les projets qui nécessitent l'intégration avec d'autres systèmes, les projets qui nécessitent une technologie de pointe, comme l'intelligence artificielle, les projets de big data, …

Performances

Elle sont excellentes, et surtout Django est extrêmement « scalable », mais il n’est pas évident de donner des chiffres car il faudrait pour cela comparer deux projets développés de deux façon différentes.

Courbe d’apprentissage / Learning Curve

Django à une courbe d’apprentissage progressive mais qui reste assez abrupte. Elle va grandement dépendre des vos connaissance préalables en programmation objet et en Python ainsi que votre pratique des modèles MVC. Un développeur expérimenté va maitriser Django dans un délai assez court, disons que c’est une question de semaines. Pour un développer débutant cela pourra pendre plus de temps.

RAD / Développement rapide

Attention avec le terme «développement rapide d’applications », car sans compétences suffisantes sur Django, il n’y aura rien de vraiment rapide. Mais une fois ces compétences, acquise le développement rapide d'applications WEB avec Django n’est pas un mythe. Prenons comme exemple quelques études de cas en développement rapide :

•michaelmoore.com, refait avec Django en cinq semaines .

•texastribune.org, construit à partir de zéro en seulement quatre semaines avec Django.

•Mahalo Answers, construit en 35 jours avec Django. http://ctmiller.emurse.com/

•baynewsnetwork.org, un flux mashup et agrégateur avec un arrière-plan complexe - construit en 3-4 jours avec Django.

•django-treedata: Vainqueur du Hack-a-Thon public « DataSF ». Ce site à été construit en 8 heures avec Django ! 

Donc si la courbe d'apprentissage est raide, on voit que une fois que les compétences acquises, les développeurs vont à une vitesse incroyable. Et à quel point il est facile de faire réaliser la plus grande partie du travail par le framework.

Flexibilité

C'est très difficile à quantifier, mais pourtant, le fait que Django soit si intensément orientée objet lui donne une longueur d'avance quand il s'agit de modifier un projet. Cela ne veut pas dire qu’un projet Django complexe soit infiniment flexible. Même des modèles de données bien conçus peuvent avoir des interdépendances, et une modification apportée à un endroit peut avoir de réelles conséquences pour d'autres parties du système. Disons simplement que c’est faisable et de manière probablement plus sure et simple que sans un framework 

Sécurité

La sécurité est une hydre à plusieurs têtes, et affecte toutes les applications Web, grandes ou petites. Injection SQL, clikjacking, cross-site scripting, etc. ainsi que de nombreux autres vecteurs d'attaque vont obliger les développeurs d'applications Web à rester au courant des nouvelles menaces de sécurité et ils vont devoir réexaminer les codes existants, face aux nouvelles vulnérabilités. C'est une tache constante.

L'un des avantages à'utiliser un framework mature ou un CMS est que la plupart des problèmes de sécurité sont gérées par le système lui-même. 

C'est vrai des CMS et de Django. Cependant, il existe des failles connues sur certains CMS par exemple Drupal a un long historique de problèmes de sécurité ( http://drupal.org/security ), alors que des problèmes similaires dans Django sont extrêmement rares. Ceci est en partie dû au fait que Django est moins utilisé et en partie parce que Django fait moins d'hypothèses sur la structure du projet (répertoires, bases, …). En d'autres termes, moins la configuration d'un site est connue par l’attaquant, moins l’attaque est aisée.

D'autres facteurs peuvent contribuer à l'excellent bilan de sécurité de Django, comme son système de cartographie d'URL qui empêche tout simplement l'accès à des modèles d'URL qui n'ont pas été prédéfinis par le développeur, et sa gestion des exceptions.

Pourtant, tous les systèmes peuvent être vulnérables si vous faites des choses stupides avec eux.

Enfin pour finit quelques raisons secondaires :

Pour l’intégration de Django à google app engine !

Et pour ses poneys (lien)

Pour son introspection des bases de données avec reconstitution des modèles semi-automatique.

 

Conclusion

Au final, un bon développeur peut faire du bon travail avec n'importe quel système, tandis qu'un mauvais développeur peut faire n’importe quoi même avec le meilleur système. Le choix de la plateforme ne fait pas tout. Mais des outils modernes et de bonnes pratiques dans la conception de plate-forme permettent de faire une partie du long chemin qui permet de construire une architecture bien conçue, propre, rapide et efficiente, qui correspond précisément aux besoins de votre organisation et/ou de votre projet. Bien sur, sans faire d’hypothèses sur un éventuel historique à prendre en compte, Django sera dans tous les cas un excellent choix.

 

Post scriptum

Django est il mieux que Ruby on Rails?

Je préfère Django certes, mais la vraie réponse est que Django (qui utilise Python) est un excellent choix pour presque n’importe quel projet où Rails (qui utilise Ruby) est également un excellent choix, et toutes autres choses étant égales par ailleurs, c’est plutôt une question de choix personnel et de choix de langage (Python / Ruby)

Article précédent

Articles similaires

Commentaires