Blog ENI : Toute la veille numérique !
Jusqu'à ce soir ! : -25€ dès 75€ sur les livres en ligne, vidéos... code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Présentation du framework Django

Les frameworks en général

En informatique, un framework est une boîte à outils de composants logiciels cohérents. Ces briques de base, les composants logiciels, servent d’éléments structurels pour la création d’un logiciel. Elles servent à créer les fondations et les principaux éléments d’architecture d’un logiciel. Comme les frameworks servent à modeler l’architecture de logiciels applicatifs, d’applications web, de middlewares ou de composants logiciels, ils sont utilisés pour être incorporés dans des logiciels. Ainsi ils sont donc à destination des concepteurs et non des utilisateurs finaux. Un framework organise les outils et les composants logiciels qui sont fournis selon un ou plusieurs plans d’architecture logicielle pré-établis.

Les principaux avantages des frameworks sont la réutilisation du code, la standardisation du cycle de vie du logiciel (spécifications, développement, maintenance et évolutions) et la formalisation d’une architecture adaptée aux besoins. De plus, ils tirent parti des 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. Il vise également à...

Django

1. Introduction

Django est un framework objet de développement web écrit en Python qui a pour objectif de rendre le développement web simple et rapide.

Avant de détailler les principales caractéristiques de Django, il faut au préalable évoquer les frameworks Web et Python.

Python est un excellent langage de programmation, déployant de nombreux paradigmes (programmation objet, fonctionnelle, etc.). De ce fait Django bénéficie de toute la souplesse et de la puissance de Python. Django bénéficie également de toute la richesse des librairies Python dont certaines sont exceptionnelles (mathpy, etc.).

Sans tenter d’approfondir ce qu’est un framework web (il suffit de lire la section précédente pour cela), mettons-nous quelques instants dans la tête d’un développeur web au début d’un projet :

« Dois-je faire du spécifique ou dois-je développer à partir d’un outil comme un CRM si ce dernier répond en partie à mes besoins ? »

Dans de nombreux cas la réponse est :

« J’aimerais bien utiliser tel ou tel logiciel open source ou CRM, mais il faudrait ajouter ceci, enlever telle ou telle fonction et modifier cela. Et ce n’est pas toujours simple ni possible. Par contre, si je développe à partir de zéro, j’aurai exactement ce que je veux, mais cela va être plus long, or je n’ai pas le temps, pas l’argent ».

Personnellement j’ai découvert Django le jour où, sur un projet, aucune des deux réponses (utiliser un CRM ou développer) ne me satisfaisait pleinement et aucune ne me permettait d’avoir rapidement un site spécifique pour le coût (temps passé) de la simple configuration d’un CRM. Pour ma part, je résumerais la vocation d’un framework web de la façon suivante : « réaliser uniquement ce qui est spécifique à un projet et assembler les composants additionnels dont on a besoin ». Ainsi sans atteindre l’utopie de réaliser un projet complexe par simple configuration de modules, Django permet de se rapprocher de ce but. D’ailleurs le slogan de Django est :

« Django : the Web framework for perfectionists...

Pourquoi adopter Django ?

1. Python « batteries included »

Django est développé en Python et Python possède une grande bibliothèque standard, fournissant des outils convenant à de très nombreuses et diverses tâches. La bibliothèque standard est particulièrement bien conçue pour écrire des applications utilisant Internet, avec un grand nombre de formats et de protocoles standard gérés (tels que MIME et HTTP). Des modules pour gérer les arbres DOM des pages HTML, créer des graphiques et manipuler des expressions régulières sont également fournis. Python inclut également un framework de tests unitaires (unittest, anciennement PyUnit) pour créer des suites de tests exhaustives. On dit souvent que de ce fait Python est fourni « piles incluses » (Python is Batteries Included) et c’est donc également le cas de Django.

Django est « pythonique » c’est-à-dire qu’il respecte les principes ZEN de Python :

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren’t special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you’re Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it’s a bad idea.

If the implementation is easy to explain, it may be a good idea....

Comparatif avec d’autres frameworks web

Voici un très rapide comparatif (source : Wikipedia.us, août 2014) entre divers frameworks web parmi les plus populaires. Si vous ne trouvez pas celui que vous utilisez déjà, je m’en excuse, j’ai essayé de citer ceux qui semblaient être les plus populaires du moment, mais cette liste n’a pas la prétention d’être exhaustive.

Comme on peut le voir, Django est parmi les plus fonctionnels et les plus populaires. Le choix d’un framework dépend également de la culture de l’équipe projet et du choix du langage de programmation.

Popularité août 2014 (activité web) :

1 - ASP.NET

100

2 - Ruby on Rails

97

3 - AngularJS

93

4 - ASP.NET MVC

92

5 - Django

90

6 - CodeIgniter

84

7 - Symfony

84

8 - Meteor

82

9 - Spring

82

10 - Ember.js

82

11- Laravel

82

12 - Flex

81

13 - JSF

81

14 - CakePHP

80

15 - Zend

79

16 - Flask

79

Popularité d’un langage en fonction des pages consultées sur le web :

Framework

Langage

Ajax

MVC

MVC push-pull

i18n & L10n

ASP.NET MVC

.NET

Oui

Oui

Push

Oui

Ruby on Rails

Ruby

Prototype, script.aculo.us, jQuery

ActiveRecord, Action Pack

Push

Oui

Django

Python

Oui

Full stack

Push

Oui

Flask

Python

Oui

Oui

Push

Oui

Grok

Python

Oui

Oui

Pull

Oui

TurboGears

Python

Toolkit- independent, via JSON

Full stack

Push

Oui

web2py

Python

Oui

Oui

Push

Oui

BlueBream (Zope 3)

Python

via add-on, Plone/KSS

Oui

Pull

Oui

Zope 2

Python

Oui

Pull

Oui

CodeIgniter

PHP >= 5.1

Tous

Oui

Push

À peu près

Symfony

PHP 5

Prototype, script.aculo.us, UJS & PJS plug-ins

Oui

Push

Oui

Symfony 2

PHP >= 5.3.3

Tous

Oui

Push

Oui

CakePHP

PHP >= 5.2

Prototype, script.aculo.us, jQuery, jQueryUI, MooTools

Oui

Push

Oui

Zend Framework

PHP >= 5.2.4

Oui

Oui

Push-pull

Oui

Zend Framework 2

PHP >= 5.3.3

Oui

Oui

Push-pull

Oui

Apache OFBiz

Java, Groovy, XML,

jQuery

Oui

Push-pull

Oui

Spring

Java

Oui

Oui

Push

Oui

WebObjects

Java

Oui

Oui

Push-pull

Oui

Framework

Langage

ORM

Tests

BDD migrations

ASP.NET MVC

.NET

ORM- independent

Unit, Functional, Integration Tests

Entity Framework

Ruby on Rails

Ruby

ActiveRecord

Unit, Functional, Integration Tests

Oui

Django

Python

Django ORM

Oui

Installer South

Flask

Python

Oui

Oui

Oui

Grok

Python

OODBMS ZODB, SQLAlchemy, Storm

Unit, functional tests

ZODB Generations

TurboGears

Python

SQLAlchemy

nose

SQLAlchemy-Migrate

web2py

Python...