Django

Fiche logiciel validé
  • Création ou MAJ importante : 05/08/13
  • Correction mineure : 05/08/13
  • Rédacteur de la fiche : Vladimir Daric - Institut de Génétique et Microbiologie (UMR 8621) (CNRS, Université Paris Sud)
  • Relecteur(s) : Dirk Hoffmann (Centre de Physique des Particules de Marseille (CPPM-IN2P3))
    Fernando Niño (Legos)
  • Contributions importantes : Une relecture "externe" a été faite par R. Le Gac (CPPM), et prise en charge par Dirk Hoffmann.
  • Responsable thématique : C FC (Inria)
Mots-clés

Django : framework de développement web en python

Description
Fonctionnalités générales

Django est un framework de développement d'applications web. Il est conçu selon le modèle MVC et dans le respect de la philosophie DRY.

ORM (Object-relational mapper)

Django fournit un ORM (mapping objet-relationnel). Le modèle de données dans Django se présente comme une classe Python. Une fois celui-ci définie, l'ORM génère une interface d'accès aux données (API) en Python très complète.

Il est également possible de continuer d'écrire les requêtes en SQL.

Interface d'administration de données

Une application d'administration de données est fournie avec le framework. Celle-ci génère automatiquement l'interface HTML, très personnalisable, pour administrer les données.

URLs élégantes

Facile à utiliser, le mappeur d'urls (contrôleur) n'impose aucune contrainte. L’écriture d’applications REST devient un jeu d'enfant.

Templates

Un langage de templates intuitif et extensible permet de bien séparer la présentation du traitement et des données.

Système de cache

Pour des sites à fort trafic, Django offre plusieurs stratégies de cache. Pour cela vous pouvez choisir d'utiliser la mémoire vive, la base de données ou le système de fichier. Pour ne citer que ces deux solutions, Django peut facilement être couplé avec Squid ou memcached.

Internationalisation (i18n) & Localisation (l10n)

Django intègre les outils nécessaires permettant l'internationalisation des applications mais également la localisation de dates et nombres.

authentification

Django fournit son propre système d'identification et d'authentification. Celui-ci gère également des groupes. Il est possible de coupler celui-ci, à l'aide de plugins, avec LDAP, Kerberos ou Apache (et Shibboleth).

L'ensemble de permissions existantes peut aisément être étendu pour correspondre à vos besoins.

Autres fonctionnalités

Introspection de la base de données

Django peut analyser la structure de la base de données et générer le modèle.

Serveur web de développement

Le serveur web fourni permet de démarrer le développement très rapidement. Aucune configuration additionnelle n'est nécessaire.

Django apps

De très nombreux plugins sont disponibles sur PyPI.

Interopérabilité

Sont nativement supportés :

Et via des adaptateurs non officiels :

  • Sybase SQL Anywhere
  • IBM DB2
  • Microsoft SQL Server 2005
  • Firebird
  • ODBC
Contexte d'utilisation dans mon laboratoire/service

Dans le cadre de développement d'applications web, nous utilisons beaucoup Django avec le plugin Django admin site. Celui-ci permet une grande personnalisation et nous donne la possibilité de fournir des interfaces de gestion de données très rapidement.

Limitations, difficultés, fonctionnalités importantes non couvertes

Django n'est pas un CMS ni un serveur d'application.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

La méthode conseillée est d'utiliser easy_install ou pip donc la distribution du PyPI (aka the CheeseShop).

Django est également présent dans la plupart de distributions Linux sous forme de package.

Généralement les mises à jour sont d'abord disponibles sur PyPI.

Plates-formes

Linux, OSX, Windows

Logiciels connexes
Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement
Références d'utilisateurs institutionnels

Liste complète de sites utilisant Django

Parmi lesquels :

  • Criminocorpus, UMR 8560 Centre A. Koyré, Ministère de la Justice (Direction de l’administration pénitentiaire), Sciences Po (Centre d’histoire), Université Paris 5 Descartes (Service historique de la Bibliothèque inter-universitaire de médecine de Paris), Archives nationales d’Outre-Mer
  • Dezède, laboratoires CÉRÉdI (EA 3229, université de Rouen), GRHIS (EA 3831, université de Rouen) et IRCL (UMR 5186, CNRS)
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Divers (astuces, actualités, sécurité)

Securité

Les applications web sont des cibles privilégiés pour les attaques informatiques. Django offre une sécurité accrue par rapport à d'autres solutions de ce type. La protection contre attaques les plus courantes est prise en charge par le framework : Cross site scripting (XSS), Cross site request forgery (CSRF), injection SQL, Clickjacking.

Un chapitre dans le documentation Django est consacré à la secutité.

Les alertes de sécurité sont annoncées sur cette liste.

Astuce

Il est préférable d'installer Django dans un environnement virtuel créé à l'aide de virtualenv. De cette manière Django dispose de son propre interpréteur Python. Il est alors possible de contrôler les versions de toutes les librairies dont votre application a besoin, de manière dissociée de celles du système hôte.

Commentaires

Responsable thématique précédent

Cette fiche a d'abord été initié par le responsable thématique Pascal Dayre. Clive Canape l'a reprise en novembre 2012.