Menu

La philo derrière Django : Architecture du Framework

django2

Dans cet article, nous allons voir comment fonctionne le Framework Django et pourquoi celui-ci est devenu un outil incontournable pour bon nombre de développeurs web. Nous verrons par ailleurs qu’il a déjà été intégré dans le développement d’applications devenues aujourd’hui incontournables pour beaucoup d’entre nous. Mais d’abord, qu’entendons-nous par le mot Framework ?

C’est quoi un Framework

Développer une application ou un site web ne consiste pas à créer des pages HTML statiques et de customiser celles-ci avec du CSS.

Les applications web sont de plus en plus complexes et demandent parfois le concours de différents langages et différents outils pour leur réalisation. Plusieurs aspects doivent aussi être pris en compte lors du développement d’une application web : la gestion de la sécurité, des bases de données, des sessions, des templates, des requêtes URL, de l’authentification des utilisateurs …etc. Toutes ces fonctionnalités sont généralement communes à toutes les applications web.

C’est pour automatiser la gestion de ces fonctionnalités communes aux applications web que plusieurs frameworks ont vu le jour depuis maintenant plusieurs années. Grâce à ces frameworks, on ne réinvente pas la roue : les développeurs peuvent alors se concentrer sur la création des fonctionnalités propres à leurs applications. L’objectif d’un framework web est donc de réduire la complexité d’un projet web et de faciliter la vie des développeurs.

En résumé : Un framework web fournit les outils nécessaires pour simplifier le travail des développeurs, en leur permettant de se concentrer sur les fonctionnalités de leur projet et en gérant de façon élégante les opérations communes à toute application web.

Pourquoi Django

Les atouts de Django sont très nombreux et il se démarque des autres Frameworks pour plusieurs raisons.

Tout d’abord, Django est écrit avec le langage python, un langage de haut niveau, largement recommandé pour apprendre la programmation. Django est lui-même assez facile à prendre en main. C’est donc un excellent Framwork pour ceux qui débutent en développement web.

Django offre aussi un très large éventail de fonctionnalités et a une grande communauté de développeurs très actifs.

En plus d’avoir une bonne documentation ultra-détaillée, il est aussi possible d’associer à ce Framework des bibliothèques externes pour réaliser une application ou un site web.

Django permet de faire du développement rapide et son architecture aide à écrire du code de façon propre et structurée, favorisant de fait le travail collaboratif.

Ceux qui l’ont déjà adopté

Aujourd’hui la réputation de Django n’est plus à faire et des applications très populaires que tu dois surement utiliser tous les jours reposent en partie sur ce Framework. Voici quelques une de ces applications :

Youtube

La plateforme de partage de vidéos, initialement écrite en PHP, a connu rapidement un essor fulgurant en termes d’audience. Les développeurs ont alors opté pour Django Framework pour améliorer les performances de l’application et y ajouter de nouvelles fonctionnalités.

Instagram

Ce très célèbre réseau social de partage de photos et de vidéos est en mesure de gérer de façon efficiente les volumes colossaux de données et d’interaction entre utilisateurs grâce à l’utilisation de Django Framework en back-end.

Spotify

Cette plateforme de streaming musicale utilise Django pour la gestion de son immense bibliothèque musicale et profite des fonctionnalités de Machine Learning de Python et fournies à travers le framework pour faire de génération automatiquement de playlists recommandées pour les utilisateurs.

L’architecture de Django Framework

Django repose sur l’architecture MVT ( Model, View, Template), elle-même inspirée du modèle MVC (Model, View, Controler) plus largement connu et utilisé par la plupart des autres frameworks web.

Architecture MVC

Architecture MVC (Infographie réalisée à l’aide de freeicons.io)

Pour rappel, l’architecture MVC est construite comme suit :

Le modèle

Le modèle représente les données, généralement sous forme d’objets. Cette brique repose sur un ORM (Object Relational Mapping) qui assure l’interaction entre le modèle et la base de données.

La vue

La vue permet de représenter les données à l’utilisateur.

Le contrôleur

Le contrôleur gère l’interaction entre la vue et le modèle.

Dans le cas du Framework Django, l’architecture diffère un peu et c’est Django qui joue le rôle de contrôleur, il n’est donc pas nécessaire le gérer l’interaction entre vue et modèle.

Architecture MVT

L’architecture MVT de Django est composée de trois couches :

Le Modèle

Le Modèle définit la structure des données et les représente sous forme d’objets ou classes d’objets. C’est la couche qui interagit avec la base de données via un ORM. 

La vue

La vue contrôle ce que que l’utilisateur peut consulter. Elle récupère les requêtes web et renvoie la réponse correspondant à chaque requête.

Le Template

Le Template définit l’interface graphique que consulte l’utilisateur. Il permet de contrôler l’interaction avec l’utilisateur et gère la façon dont la réponse à une requête est retournée à celui-ci.

Architecture MVT (Infographie réalisée à l’aide de freeicons.io)

Comment ça marche

Pour mieux comprendre cette architecture, voyons -à travers un exemple classique- comment ces trois couches interagissent entre elles :

  1. Un utilisateur formule une requête HTTP pour une ressource sur un navigateur par exemple
  2.  Django récupère la requête et la considère comme une URL puis cherche le schéma correspondant (URL pattern) à celle-ci dans un fichier appelé « url.py » (Un schéma d’URL fait correspondre une URL à une vue)
  3. Une fois le chemin d’URL trouvé, Django appelle la vue correspondant à l’URL et se trouvant dans le fichier « views.py »
  4. La vue est une fonction ou une méthode qui exécute des instructions pour répondre à la requête. La vue cherche les modèles, dans le fichier « models.py », et les templates (fichiers HTML, fichiers statiques : CSS, JS, media …etc) qui doivent intervenir pour retourner une réponse à l’utilisateur :
    • La vue peut interagir avec le modèle lorsqu’il s’agit d’interroger la base de données et de gérer les données associées à la requête de l’utilisateur
    • La vue fait appel au template nécessaire pour construire et compléter la réponse à la requête HTTP
  5. L’utilisateur peut consulter la réponse renvoyé par la vue sur son navigateur

Conclusion

Nous avons pu voir que Django Framwork est une plateforme de développement d’application web puissante, très complète et facile à prendre en main. Django permet aux développeurs de gagner du temps et d’être plus efficace dans leur travail. Dans un prochain article nous allons voir comment réaliser une application à l’aide de Django Framework.