Qu'est-ce que Django ?

Django est un logiciel que vous pouvez utiliser pour développer des applications web rapidement et efficacement. La plupart des applications web ont plusieurs fonctions communes, telles que l'authentification, la récupération d'informations à partir d'une base de données et la gestion des cookies. Les développeurs doivent coder des fonctionnalités similaires dans chaque application web qu'ils écrivent. Django leur facilite la tâche en regroupant les différentes fonctions dans une vaste collection de modules réutilisables, appelés cadres d'applications web. Les développeurs utilisent le cadre web de Django pour organiser et écrire leur code de manière plus efficace et réduire considérablement le temps de développement web.

Pourquoi les développeurs web choisissent-ils Django ?

Il existe plusieurs cadres web sur le marché. Django a été écrit en langage Python et il figure parmi les nombreux cadres web Python. Cependant, les développeurs préfèrent souvent le cadre web Django aux autres pour les raisons suivantes.

Vitesse de développement

Le cadre Django est bien organisé et simple à installer et à apprendre, vous pouvez donc commencer en quelques heures. Les concepteurs de Django ont créé le cadre pour implémenter rapidement n'importe quelle architecture web dans le code. Il prend en charge un développement rapide et une conception propre et pragmatique. Vous pouvez écrire du code en quelques lignes seulement, car Django propose une structure prête à l'emploi pour plusieurs tâches de développement web courantes, telles que les suivantes :

  • Authentification de l'utilisateur
  • Administration du contenu
  • Plans du site
  • Flux RSS

Rentable

Django est un projet Python gratuit et open source avec une communauté active qui examine et maintient le logiciel. Une organisation à but non lucratif appelée Django Software Foundation promeut et soutient l'utilisation et la maintenance de Django. Elle organise régulièrement des rencontres, des rassemblements et des événements communautaires qui encouragent d'autres développeurs à examiner le projet Django et à y contribuer. Le résultat est un cadre web de haute qualité et riche en fonctionnalités, dont l'utilisation est gratuite.

Populaire

Des milliers de projets open source et de sites de premier plan utilisent Django, tels que :

  • Instagram
  • Mozilla Firefox
  • Pinterest
  • National Geographic

En raison de sa popularité, le cadre continue d'évoluer et dispose d'une solide infrastructure de support. Un grand nombre de particuliers et d'entreprises fournissent une assistance gratuite et payante pour tous les défis de développement que vous pourriez rencontrer lorsque vous utilisez Django.

Comment fonctionne Django ?

Toute application web est composée de deux parties : le code serveur et le code client. Le client ou le visiteur du site web dispose d'un navigateur. Lorsqu'ils saisissent une URL dans leur navigateur, ils envoient une demande au serveur web sur lequel l'application web est exécutée. Le serveur traite la demande en utilisant une base de données et renvoie des informations au client en réponse. Le code client affiche les informations au visiteur sous forme de page web.

Django gère le code de ce système de demande et de réponse en utilisant une architecture Model-View-Template (MVT).

Modèle

Les modèles Django servent d'interface entre la base de données et le code du serveur. Ils constituent la seule source d'information définitive concernant vos données. Ces modèles de données contiennent les champs et opérations essentiels dont vous avez besoin pour interagir avec votre base de données. Les modèles Django convertissent ainsi les tables de votre base de données en classes ou en objets dans le code Python. C'est ce que l'on appelle le mappage relationnel objet.

En général, chaque modèle correspond à une seule table de base de données et possède des attributs qui représentent les champs de la base de données. Si, par exemple, votre site web contient des informations sur les employés, il peut être représenté comme suit :

  • Table des employés avec leurs noms et les champs d'adresse.
  • Un modèle d'employé appelé Employé de classe avec deux attributs, ou champs de modèle, appelés Nom et Adresse.

Afficher

Les vues Django traitent la demande à l'aide des modèles. Vous pouvez créer une fonction d'affichage pour chaque type de demande que les visiteurs de votre site web peuvent lui adresser. Une fonction d'affichage peut prendre la demande en entrée et renvoyer une réponse, qui peut être un code d'erreur, une image, un fichier ou tout autre type de données.

Django dispose d'une fonctionnalité d'outil de mappage d'URL, ou répartiteur d'URL, qui mappe vos fonctions d'affichage à vos URL. Vous devez créer un fichier d'outil de mappage d'URL dans lequel vous écrivez des modèles d'URL comme indiqué ci-dessous.

urlpatterns = [

path('employee/name', views.employee_name),

path('employee/<int:year>/', views.year_archive),

]

Par exemple, si vous souhaitez que les visiteurs de votre site web voient la liste de tous vos employés pour une année spécifique, vous définissez le chemin d'URL employee/year number et vous écrivez une fonction de vue Django correspondante year_archive. Lorsque le visiteur de votre site web saisit « yourwebsitename.com/employee/2020 » dans son navigateur, les étapes suivantes se produisent :

  1. La demande est envoyée à votre application web.
  2. Le cadre web Django prend le numéro de l'année et le nom de la fonction de vue de l'outil de mappage d'URL.
  3. Il exécute la fonction d'affichage year_archive pour l'année 2020.
  4. Year_archive utilise le modèle des employés pour obtenir toutes les données sur les employés de la base de données pour 2020.
  5. Le cadre web Django renvoie les données en réponse.

Modèle

Les modèles Django gèrent la présentation de page web dans le navigateur. Comme la plupart des pages web sont en langage HTML (Hypertext Markup Language), vous pouvez écrire du code de modèle Django dans un style similaire à HTML. Un fichier modèle contient certains composants :

  • Les parties statiques de la sortie HTML finale, telles que les images, les boutons et les en-têtes.
  • Syntaxe spéciale décrivant comment insérer du contenu ou des données dynamiques, qui change à chaque requête.

Les composants suivants constituent le système de modèles Django.

Le langage de modèles

Le langage de modèles est le langage de programmation que vous utilisez pour écrire le code du modèle HTML. Django prend en charge son propre langage de modèle Django et une alternative couramment utilisée appelée Jinja2.

Le moteur de modèles

Le moteur de modèles traite le fichier de modèle et crée la sortie HTML finale. Il inclut les données de la réponse dans cette sortie.

Par exemple, lorsque le visiteur de votre site web demande des informations sur les employés, votre modèle Django remplit la page web qu'il voit avec l'en-tête de votre site web, un tableau contenant les noms et adresses de tous les employés, ainsi qu'un bouton indiquant Suivant.

Quels autres modules pouvez-vous utiliser dans Django ?

Bien que l'architecture MVT (Model-View-Template) définisse la structure de base de toute application, Django dispose de plusieurs autres modules pour améliorer votre site web. Nous en donnons quelques exemples ci-dessous.

Formulaires

La plupart des sites web nécessitent des formulaires, pour des tâches telles que l'enregistrement et le paiement, ou pour recueillir des informations auprès du visiteur du site web Django fournit de nombreux outils et bibliothèques que vous pouvez utiliser pour gérer les formulaires de votre site web. Il peut simplifier et automatiser le traitement des formulaires et le faire de manière plus sécurisée que si vous écriviez le code vous-même.

Django gère le traitement des formulaires de trois manières :

  1. Création des formulaires en préparant et en restructurant les données à afficher
  2. Validation des formulaires en vérifiant les formulaires HTML côté client
  3. Traitement des formulaires par réception des données soumises

Authentification de l'utilisateur

Les sites web contemporains doivent authentifier et autoriser les utilisateurs. L'authentification vérifie l'identité d'un utilisateur, tandis que l'autorisation décide de ce qu'un utilisateur authentifié peut faire sur le site. Django peut gérer l'authentification pour différentes utilisations.

  • Comptes utilisateurs
  • Autorisations et indicateurs oui ou non qui permettent aux utilisateurs d'effectuer certaines tâches sur le site web
  • Groupes de plusieurs comptes utilisateurs avec des autorisations similaires
  • Sessions utilisateur basées sur les cookies

Il fournit également un système de hachage de mots de passe configurable et des outils pour restreindre le contenu des formulaires et des vues.

Administration du site

Le site d'administration de Django simplifie la mise à disposition d'une page d'administration pour votre site. Les administrateurs de site peuvent utiliser la page pour créer, modifier ou afficher les modèles de données de votre site.

Est-ce que Django est préconfiguré ?

Nous qualifions officieusement les cadres web de « préconfigurés » lorsqu'ils appliquent un processus aux développeurs web. Ils ont une méthode que les développeurs doivent suivre pour accomplir certaines tâches, ou un avis sur la question. Par exemple, les cadres préconfigurés prennent généralement en charge le développement efficace dans des secteurs spécifiques en conservant une documentation détaillée pour les tâches applicatives liées à ce secteur.

D'autre part, les cadres non préconfigurés ont moins de restrictions sur la manière dont vous pouvez intégrer les différents composants MVT (Model-View-Template) ensemble. Bien qu'ils soient plus flexibles, ils entraînent des complications dans l'organisation du code, car différents développeurs peuvent utiliser différentes approches pour la même tâche.

Django est quelque peu préconfiguré. Il fournit une large gamme de composants et comprend une documentation sur la manière de gérer de nombreux types de tâches de développement web. Les développeurs peuvent utiliser l'architecture découplée de Django pour choisir parmi une gamme d'options, et elle ajoute même la prise en charge des nouvelles options dont ils ont besoin.

Qu'est-ce que la sécurité de Django ?

Les cybercriminels ciblent souvent les applications web pour accéder aux informations de connexion des utilisateurs, aux données financières et à d'autres informations sensibles. Le cadre web Django propose plusieurs fonctionnalités pour protéger vos applications web et vos utilisateurs. Vous évitez de nombreuses erreurs de sécurité courantes en suivant les bonnes pratiques de Django. Nous en donnons quelques exemples ci-dessous.

Protection contre les scripts inter-site

Les attaques par scripts inter-site (XSS) se produisent lorsque des cybercriminels insèrent du code malveillant dans les navigateurs des utilisateurs de votre site web. Ils peuvent attaquer vos utilisateurs en trompant votre application web de plusieurs manières, telles que les suivantes :

  • Stocker des scripts malveillants dans votre base de données afin que le serveur envoie par inadvertance du code malveillant lors de sa prochaine réponse.
  • Inciter vos utilisateurs à cliquer sur un lien qui provoque l'exécution de code client malveillant dans le navigateur de l'utilisateur, au lieu de votre code,.

Par exemple, le modèle Django peut contenir {{name}}, qui affiche le texte qu'un utilisateur saisit dans le champ de nom de son profil. Le cybercriminel détourne la session et change le nom en un code tel que <script>alert('hello')</script>. Le modèle devient {{<script>alert('hello')</script>}}.

Ce code s'exécute désormais dans le navigateur de votre utilisateur afin que le message « Bonjour » apparaisse à l'écran. Bien que cet exemple soit simpliste, vous pouvez voir comment un cybercriminel peut insérer des scripts complexes pour contrôler l'ordinateur de votre utilisateur.

Django vous protège contre de telles attaques en échappant ou en ignorant automatiquement des caractères spécifiques tels que < et >, qui indiquent un code malveillant, de l'entrée utilisateur.

Protection contre les accès non autorisés

Les attaques par falsification de demandes intersites (CSRF) se produisent lorsque des pirates informatiques dérobent les informations d'identification de vos utilisateurs et envoient des demandes non autorisées à votre application web. Django dispose d'une protection intégrée contre la plupart des types d'attaques CSRF dans son module CSRF. Il fonctionne en envoyant une valeur secrète à chaque utilisateur lors de sa première connexion. 

Les demandes des nouveaux clients incluent la valeur secrète comme preuve que le client est bien la personne qu'il prétend. Puisque seul le navigateur de l'utilisateur autorisé connaît la valeur secrète, Django peut rejeter les demandes automatiquement si elles proviennent d'une autre machine prétendant être l'utilisateur. Vous devez activer le paramètre du module CSRF de Django pour que cela fonctionne.

Protection contre les injections SQL

Les cybercriminels utilisent des injections SQL pour insérer du code SQL dans votre base de données à l'aide de demandes HTTP telles que POST. Le code malveillant peut usurper ou supprimer vos données authentiques. Django résout ce problème dans la conception elle-même. Les données envoyées par l'utilisateur, appelées paramètres, sont conservées séparément de la requête de base de données jusqu'à ce qu'elles atteignent la couche du modèle. Le modèle Django peut alors échapper les caractères dangereux lorsqu'il crée le code de requête.

Protection grâce au soutien de la communauté

La protection de Django va au-delà de ses fonctionnalités de sécurité intégrées. Comme Django est open source, de nombreux développeurs expérimentés utilisent et analysent les modules Django. Des tests approfondis augmentent la fiabilité du code de Django et empêchent les failles de sécurité accidentelles d'être ignorées.

Qu'est-ce que la capacité de mise à l'échelle de Django ?

La capacité de mise à l'échelle, dans le domaine du développement de sites web, fait référence à la capacité de ce dernier à traiter plusieurs demandes de clients en même temps. Les projets Django sont très évolutifs et peuvent traiter des milliers de demandes. Vous pouvez mettre à l'échelle votre application Django comme suit.

Matériel

L'équipe de Django a conçu le cadre web de manière à utiliser efficacement le matériel de votre système. Avec une architecture sans partage, Django sépare les composants tels que la couche de base de données (les modèles) et la couche d'application (les vues). Vous pouvez ajouter du matériel à n'importe quel niveau sans affecter le reste du système. Vous pouvez ajouter d'autres serveurs de base de données ou d'applications à votre système et Django utilisera ces ressources efficacement pour gérer plusieurs visiteurs.

Mise en cache

La mise en cache est le processus qui consiste à enregistrer certaines données de pages web sur le serveur du client ou sur des serveurs intermédiaires afin que votre application Django puisse traiter les demandes plus rapidement, en augmentant ainsi l'échelle. Django propose un système de mise en cache robuste avec différents niveaux de mise en cache :

  1. Vous pouvez mettre en cache l'intégralité de votre site web.
  2. Vous pouvez mettre en cache une sortie de fonction d'affichage spécifique.
  3. Vous pouvez mettre en cache du contenu spécifique dont la création prend beaucoup de temps.

Les projets Django fonctionnent également bien avec les caches tiers. Vous pouvez écrire du code qui donne des conseils sur ces caches et leur indique quelle partie de votre application vous souhaitez mettre en cache.

Comment AWS peut-il vous aider à prendre en charge vos applications web Django ?

AWS Elastic Beanstalk est un service simple à utiliser pou déployer et mettre à l'échelle des applications et des services web développés avec des technologies telles que Django, Python, Java, .NET, PHP, Node.js, Ruby, Go et Docker sur des serveurs courants, comme Apache, Nginx, Passenger et IIS.

Elastic Beanstalk prend en charge les développeurs Django des manières suivantes :

  • Vous téléchargez votre code Django et Elastic Beanstalk gère automatiquement le déploiement.
  • Elastic Beanstalk met en service et gère l'infrastructure ainsi que la pile applicative (plate-forme), de sorte que vous n'avez pas à investir de temps ou à développer une expertise.
  • Elastic Beanstalk évolue automatiquement, de façon ascendante ou descendante, selon les besoins spécifiques de votre application grâce aux paramètres Auto Scaling ajustables.

Commencez à déployer une application Django sur Elastic Beanstalk en créant un compte AWS gratuit dès aujourd'hui.

AWS Django : prochaines étapes

Créer un compte gratuit

Obtenez un accès instantané à l'offre gratuite AWS. 

S'inscrire 
Commencer à créer dans la console

Commencez à créer dans la console de gestion AWS.

Se connecter