Cours
Django est un cadre de développement web de haut niveau, libre et gratuit, largement utilisé. Il offre aux développeurs de nombreuses fonctionnalités "prêtes à l'emploi", ce qui permet un développement rapide. Cependant, les sites web construits à partir de ce système sont à la fois sécurisés, évolutifs et faciles à maintenir.
Objectif
L'objectif de ce tutoriel est de construire une application de blog où le contenu du blog peut être créé et mis à jour par le biais d'un panneau d'administration. Le contenu du blog est affiché sur la page et peut être supprimé si nécessaire. L'application globale fournit une fonctionnalité CRUD (Créer, Lire, Mettre à jour, Supprimer).
Ce tutoriel n'utilise pas de technologies FrontEnd comme Javascript, CSS, etc. mais se concentre sur des concepts de base mais essentiels qui sont nécessaires dans tout développement Web Django.
Configuration requise
- Git Bash : L'utilisateur de tous les systèmes d'exploitation peut l'utiliser. Toutes les commandes liées à Django et les commandes Unix sont effectuées par son intermédiaire. Pour le téléchargement de Git bash : Cliquez sur moi.
- Éditeur de texte : Vous pouvez utiliser n'importe quel éditeur de texte comme Sublime Text ou Visual Studio Code. Pour le projet suivant, Sublime Text est utilisé.
- Python 3 : La dernière version de Python peut être téléchargée dans Download Python.
Note : Vous pouvez facilement suivre ce tutoriel si vous comprenez les bases de Python et connaissez les boucles, les fonctions, les classes, etc., et si vous avez quelques connaissances de bash ou de la ligne de commande.
Environnement virtuel
L'environnement virtuel sert de dépendance aux projets liés à Python. Il fonctionne comme un conteneur autonome ou un environnement isolé où sont installés tous les paquets liés à Python et les versions requises relatives à un projet spécifique. Étant donné que de nouvelles versions de Python, de Django ou de paquets, etc. seront déployées, grâce à l'aide d'un environnement virtuel, vous pouvez travailler avec des versions plus anciennes qui sont spécifiques à votre projet. En résumé, vous pouvez démarrer un projet indépendant lié à Django de la version 2.0, tandis qu'un autre projet indépendant lié à Django de la version 3.0 peut être démarré sur le même ordinateur.
Note : Il existe de nombreuses façons de créer un environnement virtuel, mais une seule est présentée ci-dessous.
Étapes de la création d'un environnement virtuel
- Vous pouvez créer un nouveau répertoire nommé "projet-blog" en utilisant la commande "mkdir" dans votre bureau.
-
Changez le répertoire en "projet-blog" en utilisant la commande "cd".

-
L'environnement virtuel est créé en utilisant 'python -m venv env', où env est notre environnement virtuel montré par la commande 'ls'.

-
Pour activer votre environnement virtuel : L'environnement virtuel peut être activé à l'aide de la commande "source", où le dossier "Scripts" doit être activé.

Le mot "env" apparaîtra entre parenthèses si vous avez réussi à activer votre environnement virtuel. - Installation de Django : Vous pouvez utiliser 'pip install django' pour installer Django dans votre environnement virtuel spécifique.

Note: Les utilisateurs de Linux et de Mac doivent utiliser spécifiquement "python3" dans la commande, car la version 2 de Python est déjà préinstallée sur leur ordinateur. De plus, il est préférable d'utiliser la version 3 dès maintenant, car Python ne prend plus en charge la version 2 après l'année 2020.
Création d'un projet Django
- La première étape consiste à créer votre projet en utilisant la commande 'django-admin startproject
project_name', où 'project_name' est 'django_blog' dans votre cas. En outre, il générera de nombreux fichiers dans notre projet nouvellement créé, que vous pourrez rechercher plus en détail dans la documentation de Django si nécessaire.
- Changez le répertoire du projet nouvellement créé à l'aide de la commande "cd" et affichez le fichier créé à l'aide de la commande "ls".

- Vous pouvez exécuter votre projet en utilisant " python manage.py runserver ".

- Le projet peut être visualisé dans votre navigateur préféré (Google Chrome, Mozilla Firefox, etc.). Vous pouvez entrer dans votre navigateur et taper 'localhost:8000' ou '127.0.0.1:8000' dans l'URL, comme indiqué ci-dessous.

Note : Le projet Django est un projet d'entreprise : Pour obtenir la même page que ci-dessus, le serveur dans le bash doit tourner en arrière-plan. Vous pouvez également arrêter manuellement le serveur si nécessaire en appuyant sur 'Ctr+C' sous Windows/Linux et 'Cmd+C' sous Mac.
Démarrer le nouveau projet Django
La création d'un nouveau projet dans Django se fait toujours en deux étapes, comme indiqué ci-dessous.
- La première étape consiste à créer une application en utilisant la commande 'python manage.py startapp
app_name', où app_name est 'blog' dans votre cas. Dans Django, il y a de nombreuses applications pour un seul projet où chaque application sert de fonctionnalité unique et spécifique pour le projet en question.
- La deuxième étape consiste à informer notre projet de l'existence de notre nouvelle application en modifiant la section INSTALLED_APP du fichier 'django_blog/settings.py'.

Changement dans nos modèles
Django utilise 'SQLite' comme base de données par défaut, qui est légère et seulement utilisée pour de petits projets, ce qui est parfait pour ce projet. Il utilise le "Object Relational Mapper (ORM)" qui facilite grandement le travail avec la base de données. Le code de la base de données n'est pas écrit, alors que les tableaux de la base de données sont créés à l'aide du mot-clé "class" dans "models.py".
Dans 'blog/models.py', vous devez créer un nouveau modèle nommé 'Post'. Il s'agit d'une classe qui deviendra par la suite un tableau de base de données et qui hérite actuellement de "models.Model". Comme dans un blog standard, un certain "Post" contient un titre, qui sera un champ appelé CharField. Il s'agit d'une colonne de texte qui accepte l'argument obligatoire "max_length", qui s'avère être 50 dans votre cas. Il existe également un autre champ nommé "content", qui est le champ TextField, qui contient le texte détaillé de l'"article" comme dans un blog standard. La méthode double underscore('str') est définie, qui remplace le champ 'title' et renvoie le nom du 'title' actuel au lieu de certains objets. 
Effectuer une migration
'python manage.py makemigrations' est un processus de première étape qui lit le fichier 'models.py' après sa création. Il crée un nouveau dossier appelé "migrations" dans lequel se trouve un fichier nommé "0001_initial.py", qui est portable dans toute la base de données. 
Migration vers la base de données
C'est la deuxième étape où 'python manage.py migrate' lit le dossier 'migrations' nouvellement créé et crée la base de données, et il fait évoluer la base de données lorsqu'il y a un changement dans le modèle. 
S'inscrire à l'administration
Passons à 'blog/admin.py' et importons les modèles appelés 'Post' en utilisant 'from .models import Post'. Pour enregistrer des modèles auprès de l'administrateur, la commande est "admin.site.register(Post)".

Création d'un SuperUtilisateur et visualisation dans le panneau d'administration
Vous devez créer un SuperUtilisateur avant d'accéder au panneau d'administration. Pour ce faire, utilisez 'winpty python manage.py createsuperuser'. 
Note : winpty est une commande spécifique à bash utilisée pour communiquer avec les programmes de la console Windows.
Exécutez votre serveur en arrière-plan dans bash par la commande python manage.py runserver. Allez dans votre navigateur et tapez ce qui suit dans l'URL. 
Remplissez ensuite vos coordonnées, c'est-à-dire le nom d'utilisateur et le mot de passe que vous avez créés précédemment : 
Affichez ensuite votre panneau d'administration avec nos modèles "Post" nouvellement créés. 
Modifiez le contenu de l'article en cliquant sur le bouton "Ajouter". Remplissez les informations et enregistrez le détail. 
Changement de vues et d'url
Passez à 'blog/views.py' et effectuez les modifications comme indiqué ci-dessous. Ajoutez la fonction "blog_list", qui reprend la requête. La requête récupère tous les objets créés à l'aide de 'Post.objects.all()' et les enregistre dans le message. Il existe un dictionnaire nouvellement créé appelé "context" dans lequel l'objet peut être transmis comme clé et obtenu par le biais du modèle "blog-list.html", ce qui est fait en renvoyant la réponse à l'aide de la fonction " render". 
Créez un nouveau fichier appelé 'urls.py' dans 'django_blog/blog' et ajoutez les changements suivants. Il existe une importation relative aux vues "blog_list" ainsi qu'une "urlpatterns", qui est une liste des chemins d'accès à une page spécifique du site web. Actuellement, le <b'path'' contient la chaîne vide et le nom de la vue. 
Passons à 'django_blog/urls.py' et importons include et faisons un changement dans 'urlpatterns'. Ajoutez ensuite le chemin d'accès à l'URL de votre application par le biais d'un include. De même, lorsque les utilisateurs passent par "posts/", ils sont dirigés vers notre "blog.urls".
Création et modification des modèles
Nous allons créer un dossier de modèles qui contient généralement le "HTML" et leur propre langage de création de modèles appelé " Jinja2".Le dossier doit s'appeler "templates/blog/blog_list.html", ce qui est la convention. 
Vous pouvez voir ci-dessous la syntaxe liée au "HyperTextMarkup Language" (HTML), où "h1" représente le gros titre et une liste non ordonnée(ul) avec l'élément de liste li. La syntaxe de boucle "for" de Jinja 2 est également utilisée pour l'itération d'un objet appelé "blog_list" provenant de "blog/views.py" et dont chaque élément est appelé "list". 
Affichez le "titre" intitulé "Premier message" sur la page web. 
Ajoutons une autre information à partir du panneau d'administration, de la même manière que ci-dessus, et nommons le titre de votre deuxième article "Second Post". 
Après avoir ajouté les informations et rechargé la page d'accueil, les informations seront mises à jour. 
Détails pour chaque poste individuel
Vous créerez chaque page individuelle contenant des informations relatives au titre de l'article et à son contenu. L'url sera "localhost:8000/posts/'id'" où id indique le numéro unique ou la clé primaire attachée à chaque "Post" donnée par Django lui-même.
Créons une fonction "blog_detail" dans "blog/view.py" , qui accepte id comme paramètre. Il existe également une requête permettant d'obtenir un identifiant spécifique et de l'enregistrer dans "each_post". De la même manière, les informations nécessaires sont transmises en tant que contexte au fichier "blog_detail.html". 
L'url dans 'blog/urls.py' est modifiée et le chemin contient le '', qui accepte l'identifiant unique sous la forme d'un nombre entier. Supposons que l'utilisateur se rende sur "posts/" et qu'il voit tous les posts, mais que lorsqu'il se rend sur "posts/1", il ne voit que les informations concernant le premier post créé. 
Créons un nouveau fichier, "blog/blog_detail.html", et apportons-y les modifications suivantes. Comme blog_detail est transmis en tant que contexte, le "titre" et le "contenu" sont accessibles à l'aide de la notation par points. 
Allez à l'URL de votre navigateur et tapez la même chose pour obtenir les articles individuels. Puisque l'identifiant de la première information créée est "1", la deuxième information doit être "2" et ainsi de suite pour les nouvelles informations créées. 
Suppression du message
Définissons la fonction blog_delete, qui prend en compte la requête et l'identifiant. De plus, une requête est faite où 'Post.objects.get(id=id)' récupère l'objet avec un identifiant unique et l'enregistre dans each_post. Enfin, HttpResponseRedirect est importé du module 'django.http' où il est utilisé pour rediriger la page vers '/posts/' 
. Dans le fichier "urls.py", importez "blog_delete" et définissez le chemin d'accès à "<id>/delete", où l'identifiant avec "delete" à la fin supprime l'objet ou l'information en question. 
Supprimons notre message en tapant ce qui suit dans le fichier 'urls.py'. 
Enfin, la page est redirigée vers '/posts' lorsque 'posts/1/delete/' est appelé alors qu'il n'existe qu'un seul message sur la page d'accueil. 
Conclusion
Félicitations pour avoir terminé le tutoriel ! Vous avez appris les bases du développement web Django et connaissez les fonctionnalités CRUD. De plus, pour plus de détails sur un sujet particulier, consultez la documentation de Django.
Références :
FAQ sur le développement web Django en Python
Qu'est-ce que Django ?
Django est un framework web libre et gratuit écrit en Python qui suit le modèle architectural modèle-vue. Il est conçu pour aider les développeurs à faire passer les applications de la conception à la réalisation le plus rapidement possible.
Quelles sont les caractéristiques de Django ?
Parmi les caractéristiques de Django figurent une conception légère et modulaire, un puissant ORM (Object-Relational Mapper) qui simplifie les interactions avec les bases de données, et une prise en charge intégrée des tâches courantes de développement web telles que l'authentification et la gestion des utilisateurs, le traitement des formulaires et l'administration du contenu.
Comment démarrer avec Django ?
Pour commencer à utiliser Django, vous devez installer Python et la bibliothèque Django sur votre machine. Vous pouvez ensuite créer un nouveau projet Django à l'aide de la commande django-admin startproject et commencer à construire votre application en utilisant les fonctionnalités et les outils intégrés de Django.
Comment créer une base de données dans Django ?
Django utilise par défaut le moteur de base de données SQLite, qui est inclus avec Python. Vous pouvez créer une nouvelle base de données en définissant des modèles dans votre application Django et en exécutant la commande migrate. Cela créera les tableaux nécessaires dans la base de données pour stocker les données de vos modèles.
Comment créer des vues et des modèles dans Django ?
Dans Django, les vues sont des fonctions qui traitent les requêtes HTTP et renvoient des réponses HTTP. Vous pouvez créer des vues en définissant des fonctions dans votre application Django qui prennent une requête et renvoient une réponse. Les modèles sont des fichiers HTML qui contiennent des espaces réservés pour un contenu dynamique. Vous pouvez utiliser le langage de gabarit de Django pour insérer du contenu dynamique dans les gabarits et les rendre dans vos vues.
Comment déployer une application Django ?
Il existe plusieurs façons de déployer une application Django, en fonction de vos besoins et de vos préférences en matière d'hébergement. Parmi les options courantes, citons le déploiement sur une plateforme cloud comme Heroku ou AWS, l'utilisation d'un serveur web comme Apache ou Nginx, ou l'utilisation d'un service d'hébergement comme PythonAnywhere ou DigitalOcean.