Term NSI Projets Créer un site Web avec Django pour Python
Créer un site Web
avec Django
pour Python
Documentation inspirée de la formation « Découvrez le framework Django » du site
Openclassrooms :
https://openclassrooms.com/fr/courses/4425076-decouvrez-le-framework-django
Xavier CARBONNAUX Septembre 2021 1
Term NSI Projets Créer un site Web avec Django pour Python
1. Création de l’environnement de travail
1.1. Installation du module Django
Installez le module Django avec pip (voir
https://docs.djangoproject.com/en/3.2/topics/install/#installing-official-release).
Ouvrir une commande shell sur windows (cmd) et tapez :
Il sera peut être nécessaire de mettre à jour pip :
Vérifiez ensuite que Django est bien installé et accessible depuis Python :
Il est parfois nécessaire de modifier les variables d’environnement Windows pour permettre
l’accès à Python.
1.2. Création du projet et de l'application
Il est prévu dans le module Django de développer plusieurs applications à partir d’un projet.
Ouvrir une commande shell sur windows (cmd) .
Se mettre dans le répertoire de travail désiré.
Créer un projet :
Se déplacer dans le répertoire du projet ainsi créé :
Créer une application dans le projet :
Xavier CARBONNAUX Septembre 2021 2
Term NSI Projets Créer un site Web avec Django pour Python
L’arborescence des répertoires est alors :
1.3. Mise à jour des paramètres généraux et des répertoires
Ouvrir le fichier settings.py et rajouter votre application à la liste des applications installées :
Xavier CARBONNAUX Septembre 2021 3
Term NSI Projets Créer un site Web avec Django pour Python
Ajouter un répertoire templates à la racine de votre projets pour les templates propres à votre
projet (erreurs404, squelette général de votre design, ...) :
Ajouter un répertoire templates dans votre répertoire mon_application pour les templates
propres à votre application :
Ajouter le répertoire templates du projet dans le fichier settings.py en modifiant la valeur de
la clé DIRS de la liste TEMPLATES :
Xavier CARBONNAUX Septembre 2021 4
Term NSI Projets Créer un site Web avec Django pour Python
Ajouter un répertoire static à la racine de votre projets pour les fichiers statiques généraux du
projet (images, feuilles de style CSS, fichiers javascript) :
Ajouter un répertoire static dans votre répertoire mon_application pour les fichiers statiques
propres à votre application :
Ajouter le répertoire static, à la fin fichier settings.py, en tapant les lignes suiantes:
Xavier CARBONNAUX Septembre 2021 5
Term NSI Projets Créer un site Web avec Django pour Python
Créer un répertoire images dans les deux répertoires static pour y stocker les images de votre
site (celles de votre projet et celle de votre application) :
Créer un répertoire javascript dans les deux répertoires static si besoin pour ranger les
fichiers javascript.
La constante DEBUG du fichier settings.py est à mêttre à TRUE pendant la phase de
développement et à FALSE en phase de production.
Changer la langue en modifiant LANGUAGE_CODE du fichier settings.py :
Il est possible de choisir le système de gestion de la base de donnée en modifiant le paramètre
DATABASES (voir documentation Django pour plus de détails).
Xavier CARBONNAUX Septembre 2021 6
Term NSI Projets Créer un site Web avec Django pour Python
2. Architecture MVT de Django
La plupart des frameworks utilisés pour réaliser des sites Web se basent sur une architecture
Modèle-Vue-Contrôleur (MVC). Cette architecture est composée de trois entités distinctes :
Le Modèle est une interface qui permet de gérer les informations manipulées par le
site Web et qui sont stockées en base de données,
La Vue est la représentation visuelle de ces informations. C’est ce qui est présenté aux
clients dans un navigateur Internet,
Le Contrôleur est le chef d’orchestre du système. En fonction des actions de
l’utilisateur, il récupère les données utiles via le Modèle et renvoie une réponse via la
Vue.
Dans le cas du framework Django, l’architecture est légèrement différente : Django gère lui-
même la partie contrôleur. On parle alors d’architecture Modèle-Vue-Template (MVT).
Le Template est un ensemble de fichiers HTML, appelé « gabarits », qui servent à la Vue
pour afficher ce que le client voit sur son navigateur. Django permet d’utiliser des structures
conditionnelles afin de rendre l’affichage dynamique en fonction des actions de l’utilisateur et
de l’état courant du site.
Lorsque le client appelle une page du site, Django se charge, via un aiguillage (routage)
d’adresses de page (URL), d’exécuter la Vue correspondante à sa demande. Cette Vue
récupère les données du Modèle et génère la réponse HTML à partir du Template et de ces
données.
Xavier CARBONNAUX Septembre 2021 7
Term NSI Projets Créer un site Web avec Django pour Python
Le développement d’un site avec Django demande donc de réaliser les quatre parties
suivantes :
Le routage des requêtes du client en fonction de l’URL demandée,
La représentation des données manipulées par le site (Modèle),
L’affichage de ces données et autres informations au format HTML/CSS (Template),
La façon dont les données sont insérées dans la page demandée (Vue).
3. Création d’une page Web « accueil.hml »
3.1. Création des templates
Chaque page de votre site correspond à un template (« squelette ») au format HTML qui est
sauvegardé dans le répertoire mon_projet/mon_application/templates.
Pour créer la page d’accueil de votre site, créer un fichier accueil.html dans ce répertoire et y
écrire :
Si vous souhaitez utiliser un feuille de style (fichier mon_application.css), il faut la
sauvegarder dans le répertoire mon_projet/mon_application/static et ajouter les lignes 1 et 6
suivantes :
Si vous souhaitez ajouter une images (NSI.jpg) sauvegardée dans le répertoire
mon_projet/mon_application/static/images/, ajouter la ligne 12 :
Xavier CARBONNAUX Septembre 2021 8
Term NSI Projets Créer un site Web avec Django pour Python
Xavier CARBONNAUX Septembre 2021 9
Term NSI Projets Créer un site Web avec Django pour Python
3.2. Création des URLs
Pour afficher une page de votre site il faut faire le lien entre l’URL qui sera appelée dans un
navigateur Web et la fonction que vous allez écrire pour l’afficher. Cela se fait dans le fichier
urls.py.
Ouvrir le fichier urls.py du répertoire mon_projet/mon_projet, importer la fonction include
(ligne 17) et modifier la variable urlpatterns pour y ajouter le fichier urls de votre
application (ligne 21) :
Créer un fichier urls.py dans votre répertoire mon_projet/mon_application :
Ouvrir votre fichier urls.py de votre application (répertoire mon_projet/mon_application) et
y taper le code suivant afin d’y ajouter votre page d’accueil :
Vous noterez que l’URL de la page d’accueil est écrite à la ligne 7.
Lorsque vous ajouterez des pages à votre site il faudra duppliquer la ligne 7 et la modifier en
fonction de l’URL visée.
Xavier CARBONNAUX Septembre 2021 10
Term NSI Projets Créer un site Web avec Django pour Python
3.3. Création des views
À chaque fois que vous appelez une page de votre site, une fonction du fichier views.py sera à
écrire afin de gérer l’affichage de votre page.
Le nom de la fonction à écrire est défini dans le fichier urls.py de votre application.
Pour la page d’accueil de votre site on code la fonction accueil (paramètre views.accueil du
ficher urls.py) dans le fichier views.py :
La fonction render gère le chargement de votre fichier accueil.html et son affichage.
Si vous souhaitez afficher des données dans une page de votre site (partie dynamique du site),
il faut :
modifier la fonction correspondante du fichier views.py pour « transmettre » vos
données à la page HTML sous la forme d’un dictionnaire.
modifier le template HTML de votre page pour afficher ces données,
Exemple :
Supposons qu’on est stockée votre nom dans la variable mon_nom et qu’on veuille l’afficher
dans la page accueil.html de votre site.
On modifie la fonction accueil du fichier views.py :
Et on modifie accueil.html de la façon suivante :
Xavier CARBONNAUX Septembre 2021 11
Term NSI Projets Créer un site Web avec Django pour Python
On peut ajouter des structures de contrôle dans les templates :
Il est possible de gérer une session dans laquelle enregistrer des données pour les transmettre
de page en page.
Il suffit pour cela de rajouter un élément dans l’attribut session, de type dictionnaire, de
l’objet request :
L’effacement de toutes les données de la session se fait ainsi :
Les paramètres transmis dans l’URL se récupèrent dans le dictionnaire POST de l’objet
request :
Remarque : attention à encapsuler ces appels aux attibuts de l’objet request dans un try car si
l’attribut n’existe pas cela va lever une exception.
Xavier CARBONNAUX Septembre 2021 12
Term NSI Projets Créer un site Web avec Django pour Python
3.4. Créations des modèles
La base de données est définie dans le fichier models.py du répertoire
mon_projet/mon_application.
Pour chaque table que l’on souhaite ajouter dans la base de données il faut créer une classe
qui hérite de models.Model.
On définit ensuite dans cette classe les champs que l’on veut grâce aux types définis dans la
classe models :
Il faut aussi définir une sous-classe Meta afin de spécifier le nom qui sera affiché dans l’outil
d’administration et dans quel ordre afficher les données.
Et enfin définir une fonction __str__ pour spécifier la façon d’afficher les données des tables
dans l’outil d’administration.
Exemple :
Supposons que l’on veuille créer une table NOMS qui contienne un champs nom de type
chaîne de caratères et de 20 caractères maximum, voici le code correspondant du fichier
models.py :
Xavier CARBONNAUX Septembre 2021 13
Term NSI Projets Créer un site Web avec Django pour Python
Remarque : chaque table est automatiquement indexée par un numéro id que l’on peut
récupérer dans le code.
Après avoir ajouter nos tables dans le fichier models.py, il faut enregistrer ces tables dans
Django. Pour cela il faut modifier le fichier admin.py du répertoire
mon_projet/mon_application :
Xavier CARBONNAUX Septembre 2021 14
Term NSI Projets Créer un site Web avec Django pour Python
3.5. Intéractions avec la BDD
Pour pouvoir intéragir avec une table de la BDD il faut tout d’abord faire une importation du
modèle correspondant, puis utiliser les fonctions suivantes pour ajouter ou supprimer un
enregistrement :
Exemple :
On veut ajouter lors de l’appel de la page d’accueil le nom contenu dans la variable
mon_nom dans la table NOMS :
Il est important d’appeler la méthode save() pour effectuer l’ajout dans la BDD ou utiliser
l’autre méthode d’ajout directe .objets.create().
La lecture dans la BDD se fait à l’aide de QuerySet :
Xavier CARBONNAUX Septembre 2021 15
Term NSI Projets Créer un site Web avec Django pour Python
Exemple :
On veut récupérer tous les noms de la tabel NOMS et les afficher dans le shell :
Xavier CARBONNAUX Septembre 2021 16
Term NSI Projets Créer un site Web avec Django pour Python
3.6. Lancement du serveur du site
Avant de pouvoir lancer votre site, il faut tout d’abord que la base de données soit créée à
partir de votre fichier models.py. Dans votre shell, placez vous dans le répertoire de votre
projet et tapez les deux commandes suivantes :
Cela va créer un nouveau fichier dans le répertoire
mon_projet/mon_application/migrations.
Exemple :
Avec la table NOMS définie précédemment, voici ce que donne ces deux commandes :
Si vous changez la définition d’une table dans votre fichier models.py il faudra relancer ces
deux commandes pour mettre à jour la base de données.
Xavier CARBONNAUX Septembre 2021 17
Term NSI Projets Créer un site Web avec Django pour Python
Le fichier de migrations créé contient alors :
On retrouve bien le nom de notre table NOMS, le champs nom, et les options d’affichage
dans l’outil d’administration. On voit aussi le champs automatique id qui sert de clé primaire
à votre table.
Vous pouvez maintenant lancer le serveur de votre site. Placez vous dans le répertoire de
votre projet et tapez la commande suivante :
Si tout se passe bien vous devriez avoir l’affichage suivant :
Vous pouvez stopper le serveur à tout moment en faisant Ctrl+C.
Pour accèder à votre page d’accueil de votre site, il faut ouvrir un navigateur Web et y taper
l’URL suivante :
ou
Remarque : attention au cache sur votre navigateur Web. Si vous modifier une page de votre
site et la recharger, ils se peut que vous ne voyiez pas le changement car votre navigateur va
utiliser la page qu’il a sauvegardé dans son cache au lieu de charger la nouvelle version. Il
faut donc forcer le rechargement de vos pages lorsque vous en modifier le code (shift+F5 sur
google Chrome).
Xavier CARBONNAUX Septembre 2021 18
Term NSI Projets Créer un site Web avec Django pour Python
3.7. Outil d’administration de la BDD
Pour accèder à l’outil d’administration de la BDD, il faut d’abord créer un « superuser » avec
la commande suivante dans votre shell :
Il faudra choisir un « username » et un « password ».
Lancez votre serveur et tapez l’URL suivante dans votre navigateur Web :
Une page d’identification vous est présentée : entrez votre username et password définis
précédemment et vous accéderez à vos tables :
Xavier CARBONNAUX Septembre 2021 19
Term NSI Projets Créer un site Web avec Django pour Python
Si vous cliquez sur le nom de votre table NOMS, vous accédez aux enregistrements :
Xavier CARBONNAUX Septembre 2021 20