Framework Django

Dans ce chapitre, nous aborderons en détail Django Framework.

Django est un framework Web MVT utilisé pour créer des applications Web. L'énorme framework web Django est livré avec tellement de "batteries incluses" que les développeurs sont souvent surpris de voir comment tout fonctionne ensemble. Le principe derrière l'ajout de tant de batteries est d'avoir des fonctionnalités Web communes dans le cadre lui-même au lieu d'ajouter ces dernières en tant que bibliothèque séparée.

L'une des principales raisons de la popularité du framework Django est l'énorme communauté Django. La communauté est si énorme qu'un site Web distinct lui a été consacré, où les développeurs de tous les coins ont développé des packages tiers comprenant l'authentification, l'autorisation, des systèmes CMS à part entière alimentés par Django, des modules complémentaires de commerce électronique, etc. Il y a une forte probabilité que ce que vous essayez de développer soit déjà développé par quelqu'un et il vous suffit de l'intégrer dans votre projet.

Pourquoi devriez-vous utiliser Django?

Django est conçu de manière à encourager les développeurs à développer des sites Web rapides, propres et pratiques. L'approche pratique de Django pour faire avancer les choses est de se démarquer de la foule.

Si vous envisagez de créer une application hautement personnalisable, telle qu'un site Web de médias sociaux, Django est l'un des meilleurs frameworks à considérer. La force de Django réside dans son interaction entre les utilisateurs ou sa capacité à partager différents types de médias. L'un des grands avantages de django est sa capacité à utiliser un large support communautaire qui vous offre des plugins tiers prêts à l'emploi hautement personnalisables dans vos applications.

Voici les dix principales raisons de choisir Django pour le développement Web -

Python

Python est sans doute l'un des langages de programmation les plus faciles à apprendre en raison de ses constructions de langage simples, de sa structure de flux et de sa syntaxe facile. Il est polyvalent et exécute des sites Web, des applications de bureau et des applications mobiles intégrées dans de nombreux appareils et est utilisé dans d'autres applications en tant que langage de script populaire.

Batteries incluses

Django est livré avec des bibliothèques communes qui sont essentielles pour créer des fonctionnalités communes telles que le routage d'URL, l'authentification, un mappeur objet-relationnel (ORM), un système de modèles et les migrations de schémas de base de données.

Admin intégré

Django a une interface d'administration intégrée qui vous permet de gérer vos modèles, les autorisations des utilisateurs / groupes et de gérer les utilisateurs. Avec l'interface de modèle en place, il n'est pas nécessaire de disposer d'un programme d'administration de base de données distinct pour toutes les fonctions de base de données, sauf les fonctions avancées.

Ne vous gêne pas

La création d'une application Django n'ajoute aucun passe-partout et aucune fonction inutile. Il n'y a pas d'importations obligatoires, de bibliothèques tierces et pas de fichiers de configuration XML.

Évolutif

Django est basé sur le modèle de conception MVC. Cela signifie que toutes les entités comme db (base de données), le code back-end et front-end sont des entités individuelles. Django nous permet de séparer le code des médias statiques, y compris les images, les fichiers, CSS et JavaScript qui composent votre site.

Django prend en charge une liste complète de bibliothèques tierces pour les serveurs Web, la mise en cache, la gestion des performances, la mise en cluster et l'équilibrage. L'un des avantages de Django est la prise en charge des principales applications et services de messagerie et de messagerie comme ReST et OAuth.

Testé au combat

Django a été ouvert pour la première fois en 2005. Après 12 ans de croissance, Django gère désormais non seulement des sites Web de publication d'informations, mais gère également tout ou partie de grandes entreprises mondiales telles que Pinterest, Instagram, Disqus, Bitbucket, EventBrite et Zapier. Cela en fait un cadre Web robuste et fiable avec lequel travailler.

Support de paquet énorme

En raison de son large soutien communautaire et de son énorme réseau de développeurs, il y a de fortes chances que tout ce que vous avez l'intention de faire ait été fait auparavant. Une grande communauté internationale de développeurs contribue à la communauté en publiant leurs projets sous forme de packages open-source.

Un de ces référentiels de ces projets est le site Django Package. Actuellement, les packages Django répertorient plus de 3400 applications, sites et outils Django réutilisables à utiliser dans nos projets Django.

Développé activement

L'un des plus grands risques associés au projet open source est sa durabilité. Nous ne pouvons pas être sûrs si cela dure longtemps.

Il n'y a pas un tel risque avec Django car il a 12 ans. Ses versions cohérentes, ses versions plus récentes / meilleures et sa communauté active se développent chaque jour avec une grande équipe de base de contributeurs volontaires qui maintiennent et améliorent la base de code chaque jour.

Libérations stables

Les projets de logiciels open source comme Django sont, dans de nombreux cas, activement développés et plus sécurisés que les logiciels propriétaires concurrents, car de nombreux développeurs les développent et les testent chaque jour. Cependant, l'inconvénient d'un projet de logiciel open source est l'absence d'une base de code stable pour un développement commercialement viable.

Dans Django, nous avons des versions LTS (Long Term Support) du logiciel et un processus de publication défini, comme indiqué dans l'image ci-dessous -

Documentation de première classe

Dès la toute première version, les développeurs de Django se sont assurés qu'il devait y avoir des documents complets appropriés disponibles et que les didacticiels soient facilement compréhensibles.

Qui utilise Django?

En raison de la force unique de Django, il existe plusieurs sites Web populaires qui sont construits avec Python au-dessus du framework Django. Vous trouverez ci-dessous quelques-uns des principaux sites entièrement ou partiellement construits sur Django.

Disqus

C'est l'un des sites d'hébergement de commentaires de blog les plus préférés au monde. Il est facile à intégrer avec les CMS (systèmes de gestion de contenu) les plus populaires comme WordPress et bien d'autres via Disqus. Gérant une base d'utilisateurs de plus de 50 millions, Django est en mesure de satisfaire les propriétaires de sites pour qu'ils atteignent leurs communautés.

L'oignon

Le site Web Onion qui fournit un lieu en ligne pour leur journal satirique, Django en fournit le cadre.

Bitbucket

Bitbucket est comme GitHub, un service d'hébergement de référentiel de contrôle de version. La seule différence entre Bitbucket et GitHub est que Bitbucket héberge des référentiels mercuriels alors que GitHub héberge des référentiels git. Comme des millions d'utilisateurs sont associés à Bitbucket, et que tous les services fournis par bitbucket (comme créer un dépôt, pousser votre code, ajouter des collaborateurs, commits, pull request, etc.) doivent être stables. Django est responsable de l'exécution du site bitbucket.

Instagram

Instagram est une application de réseautage social spécialement conçue pour ceux qui aiment partager des photos et des vidéos avec tous leurs amis. Actuellement, il y a beaucoup de célébrités sur Instagram pour rester au plus près de leurs fans. Le framework Django exécute également Instagram.

Mozilla Firefox

Le deuxième navigateur le plus utilisé au monde après Google Chrome est le navigateur Mozilla. Maintenant, la page d'aide de Mozilla est construite avec le framework Django.

Pinterest

Des millions d'utilisateurs à travers le monde découvrent leurs nouvelles idées et leur inspiration sur Pinterest. Pinterest utilise le framework Django (modifié selon leurs besoins) pour l'exécuter.

NASA

Le site Web officiel de la National Aeronautics and Space Administration est un endroit où des millions d'utilisateurs peuvent visiter et consulter les nouvelles, les images, les vidéos et les podcasts fournis par l'agence de premier plan. Django développe certaines parties spécifiques du site officiel de la NASA.

Le Washington Post

S'il y a un journal influent dans le monde, c'est certainement le Washington Post. Le site Web du Washington Post est une source d'information en ligne extrêmement populaire pour accompagner leur quotidien. Son énorme quantité de vues et de trafic a été facilement gérée par le framework Web Django.

Cadeaux Reddit

Le site Web très populaire de Reddit a lancé une plate-forme d'échange de cadeaux et de rencontres en ligne et anonyme appelée Reddit Gifts. Le site met en relation des utilisateurs du monde entier et facilite l'échange de cadeaux entre eux. Le framework web Django alimente ses fonctionnalités.

Prezi

Prezi est une alternative cloud à Microsoft PowerPoint basée sur le framework Django. Le site fournit une toile virtuelle qui peut être manipulée et agrandie et réduite. Cela fournit la vue complète de la présentation plutôt que des diapositives individuelles.

Installer et créer un projet et une application Django

Avant d'installer Django, nous devons nous assurer que Python est installé. En supposant que vous utilisez virtualenv, une simple installation de pip django devrait suffire.

Installation de l'environnement virtuel et de Django

Voici le processus pour installer l'environnement virtuel et Django dans votre environnement Windows -

Pour vérifier si Django est correctement installé, tapez le code ci-dessous -

Créer un projet Django

Une fois l'installation terminée, nous devons créer un projet Django.

L'exécution de la commande ci-dessous dans votre machine Windows créera le projet django suivant -

django-admin startproject my_project_name

Taper dir affichera un nouveau fichier et un nouveau répertoire comme indiqué ci-dessus.

manage.py- manage.py est un fichier Python exécutable en ligne de commande qui n'est qu'un wrapper autour de django-admin. Il nous aide à gérer notre projet qui est également impliqué dans son nom.

Avec cela, il a créé un répertoire appelé, myFirstDjangoProjectà l'intérieur de myFirstDjangoProject qui représente la racine de configuration de notre projet. Explorons-le beaucoup plus profondément.

Configurer Django

En appelant le répertoire myFirstDjangoProject «configuration root», nous voulons dire que ce répertoire contient les fichiers nécessaires à la configuration générale de notre projet Django. Pratiquement tout ce qui se trouve en dehors de ce répertoire sera uniquement axé sur la «logique métier» associée aux modèles, vues, itinéraires, etc. du projet. Tous les points qui relient le projet ensemble mèneront ici.

  • __init__.py - Ceci est vide et change le répertoire en un package Python importable.

  • settings.py - Comme son nom l'indique, c'est l'endroit où la plupart des éléments de configuration seront définis.

  • urls.py - Les URL sont définies avec urls.py. Avec cela, nous n'avons pas à écrire explicitement chaque URL du projet dans ce fichier. Cependant, nous devons indiquer à Django où les URL ont été déclarées (c'est-à-dire que nous devons lier d'autres URL dans urls.py).

  • Wsgi.py - Ceci est pour aider l'application en production et est similaire à d'autres applications comme Flask, Tornado, Pyramid qui expose un objet «app».

Définition des paramètres

Jetant un œil à l'intérieur de settings.py révélera sa taille considérable - et ce ne sont que les valeurs par défaut. Les autres choses dont nous devons faire attention sont les fichiers statiques, la base de données, les fichiers multimédias, l'intégration au cloud ou d'autres dizaines de façons dont un projet Django peut être configuré. Comprenons quelques points mentionnés dans le fichier settings.py -

  • BASE_DIR- Ceci est utile pour localiser les fichiers. Dans le fichier setting.py, le paramètre BASE_DIR définit le chemin absolu vers le répertoire de base.

  • SECRET_KEY- Il est utilisé pour faire des hachages. En général, nous avons utilisé secret_key pour les cookies, les sessions, la protection csrf et les jetons d'authentification.

  • DEBUG - Nous pouvons le paramétrer pour projeter en cours de développement ou de production.

  • ALLOWED_HOSTS- Nous fournissons la liste des noms d'hôtes par lesquels notre application est servie. En mode développement, il est facultatif de définir; cependant, dans la machine de production, nous devons définir notre projet Django.

  • INSTALLED_APPS- C'est la liste des «applications» Django qui sont actuellement installées et exécutées dans notre projet Django. Django intégré fournit six applications installées comme suit -

    • 'django.contrib.admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE- Cela aide notre projet Django à fonctionner. C'est une classe python qui se connecte au traitement des requêtes / réponses de django.

  • TEMPLATES- Il définit comment le document doit être affiché dans le frontend. Les modèles Django sont utilisés pour produire n'importe quel format basé sur du texte.

  • WSGI_APPLICATION- Tout serveur que nous installons doit savoir où se trouve le fichier WSGI. Si vous utilisez un serveur externe, il recherchera ses propres paramètres. Par défaut, il pointe vers des objets dans wsgi.py.

  • DATABASES- Il définit les bases de données auxquelles notre projet Django accède actuellement. Il est obligatoire de définir la base de données par défaut. Dans le cas où nous définissons la base de données de notre choix, nous devons mentionner quelques éléments liés à la base de données tels que - HOST, USER, PASSWORD, PORT, Database NAME et ENGINE approprié.

  • STATIC_URL- C'est l'URL à utiliser pour faire référence aux fichiers statiques situés dans STATIC_ROOT. Par défaut, c'est None.

Cependant, nous pouvons avoir besoin d'ajouter un chemin pour les fichiers statiques. Descendez à la fin du fichier, et juste sous l'entrée STATIC_URL, ajoutez-en une nouvelle appelée STATIC_ROOT comme indiqué ci-dessous -

myFirstDjangoProject/settings.py

STATIC_URL = '/ statique /'

STATIC_ROOT = os.path.join (BASE_DIR, 'statique')

Configurer une base de données

Il existe de nombreux logiciels de base de données différents qui peuvent stocker la date de votre site. Nous utiliserons celui par défaut, sqlite3.

Ceci est déjà configuré dans la partie ci-dessous de votre myFirstDjangoProject/settings.py -

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

Pour créer une base de données pour notre blog, exécutons ce qui suit dans la console - python manage.py migrate (nous devons être dans le répertoire myFirstDjangoProject qui contient le fichier manage.py.

Vous obtiendrez la sortie suivante si tout se passe bien -

Démarrage du serveur Web

Vous devez être dans le répertoire qui contient le fichier manage.py. Dans la console, nous pouvons démarrer le serveur Web en exécutant python manage.py runserver comme suit -

Il ne vous reste plus qu'à vérifier que votre site Web fonctionne. Ouvrez votre navigateur (Firefox, Chrome, Safari, Internet Explorer ou tout ce que vous utilisez) et entrez cette adresse -

http://127.0.0.1:8000/

ou

http://localhost:8000/ # Comme notre serveur Web fonctionne uniquement sur notre machine locale.

Toutes nos félicitations! Vous venez de créer votre premier site Web et de l'exécuter à l'aide d'un serveur Web!

Pendant que le serveur Web est en cours d'exécution, vous ne verrez pas de nouvelle invite de ligne de commande pour entrer des commandes supplémentaires. Le terminal acceptera le texte suivant mais n'exécutera pas de nouvelles commandes. Cela est dû au fait que le serveur Web fonctionne en permanence pour écouter les demandes entrantes.

Modèles Django

Nous essayons de créer un modèle Django qui stockera tous les articles de notre blog. Mais pour nous assurer que cela fonctionne, nous devons nous renseigner sur les objets.

Objets

Objects est une collection de propriétés et d'actions. Comprenons cela avec un exemple. Supposons que nous voulions modéliser un chat, nous allons créer un objet appelé Cat qui a des propriétés telles que la couleur, l'âge, l'humeur (bonne / mauvaise / somnolente) et le propriétaire.

Ensuite, le chat a quelques actions: ronronner, gratter ou nourrir.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

Donc, fondamentalement, nous essayons de décrire des choses réelles dans le code avec des propriétés (appelées propriétés d'objet) et des actions (appelées méthodes).

Alors que nous construisons un blog, nous avons besoin d'un contenu textuel et d'un titre. Il est également nécessaire d'avoir le nom de l'auteur, la date de création ainsi que la date de publication.

Donc, notre blog aura les objets suivants -

Post 
-------- 
title 
text 
author 
created_date 
published_date

Nous avons également besoin d'une méthode pour publier ce message. Comme nous savons maintenant ce qu'est un objet, nous pouvons créer un modèle Django pour notre article de blog.

Un modèle est un type d'objet spécial dans Django et est enregistré dans la base de données. Nous stockerons nos données dans la base de données SQLite.

Créer une application

Pour que tout soit clair, nous allons créer une application distincte dans notre projet. Ci-dessous, nous allons essayer de créer une application Web de blog en exécutant la commande simple mentionnée ci-dessous.

Maintenant, nous remarquerons qu'un nouveau répertoire myBlog est créé et qu'il contient maintenant un certain nombre de fichiers. Les répertoires et fichiers de notre projet doivent être les suivants -

Après avoir créé une application, nous devons également dire à Django de l'utiliser. Nous faisons cela dans le fichier myFirstDjangoProject / settings.py.

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

Créer un modèle d'article de blog

dans le myBlog/models.py fichier, nous définissons tous les objets appelés Modèles - c'est un endroit dans lequel nous définirons notre article de blog.

Ouvrons myBlog / models.py, supprimons tout ce qu'il contient et écrivons le code comme suit -

Tout d'abord, nous importons certaines fonctionnalités à partir d'autres fichiers en appelant ou en les important. Donc avec cela, au lieu de copier et coller les mêmes choses dans chaque fichier, nous pouvons inclure certaines parties avecfrom and import.

class Post(models.Model) - Cette ligne définit notre modèle (c'est un objet).

  • class est un mot-clé spécial qui indique que nous définissons un objet.

  • Post est le nom de notre modèle. Commencez toujours un nom de classe par une lettre majuscule.

  • models.Model signifie que la publication est un modèle Django, donc Django sait qu'il doit être enregistré dans la base de données.

Parlons maintenant des propriétés que nous avons définies ci-dessus: titre, texte, date de création, date de publication et auteur. Pour ce faire, nous devons définir le type de chaque champ.

  • models.CharField - C'est ainsi que vous définissez du texte avec un nombre limité de caractères.

  • Models.TextField - Ceci est pour un texte long sans limite.

  • Models.DateTimeField - Ceci est pour la date et l'heure.

  • Models.ForeignKey - Ceci est un lien vers un autre modèle.

Nous définissons une fonction / méthode avec def et publier est le nom de la méthode.

Les méthodes renvoient souvent quelque chose. Ici, lorsque nous appelons __str __ (), nous obtiendrons un texte (chaîne) avec un titre de publication.

Création de tables pour les modèles dans votre base de données

La dernière étape consiste à ajouter un nouveau modèle à notre base de données. Tout d'abord, nous devons faire comprendre à Django que nous avons apporté quelques modifications à notre modèle. Faisons de même dans notre fenêtre de console avec la commandepython manage.py make migrations myBlog comme indiqué ci-dessous -

Ensuite, Django prépare un fichier de migration que nous devons maintenant appliquer à notre base de données. Dans notre console, nous pouvons taper:python manage.py migrate myBlog et la sortie devrait être comme suit -

Notre modèle Post est maintenant dans notre base de données.

Administrateur Django

Pour ajouter, modifier et supprimer les articles que nous venons de modéliser, nous utilisons l'admin Django.

Alors ouvrons le myBlog/admin.py file et mettez ci-dessous le contenu dans ce -

Tout d'abord, nous importons (incluons) le modèle Post défini dans le chapitre précédent. Pour rendre notre modèle visible sur la page d'administration, nous devons enregistrer le modèle avec admin.site.register (Post).

Pour vous connecter à un site d'administration, vous devez créer un super-utilisateur - un compte d'utilisateur qui contrôle tout sur le site. Alors arrêtez le serveur web et tapez la ligne de commande pythonmanage.py createsuperuseret appuyez sur Entrée.

Ok, il est donc temps de regarder notre modèle Post. N'oubliez pas d'exécuter python manage.py run server dans la console pour exécuter le serveur Web. Accédez à votre navigateur et saisissez l'adressehttps://127.0.0.1:8000/admin/.Connectez-vous avec les informations d'identification que nous venons de choisir. Ensuite, vous devriez voir le tableau de bord d'administration de Django comme ci-dessous -

Allez dans Posts et expérimentez un peu avec. Vous pouvez ajouter de nombreux articles de blog et contenus de n'importe où. Votre blog ressemblera à ceci -

Ceci n'est qu'un aperçu de Django et nous sommes capables de créer un blog avec seulement quelques lignes de code.