Cours1 Web en Python ISSEA AS3 2023
Cours1 Web en Python ISSEA AS3 2023
1
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Objectifs du cours
● Ce cours permet aux apprenants de développer
les compétences pour la création des sites web
dynamiques en Python
2
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Présentation du cours
Contenu
● Chapitre 1 : Généralités sur la programmation Web
● Chapitre 2 : Programmation graphique
● Chapitre 3 : Framework Django et WEB2PY
● Chapitre 4 : Gestion des URLs, des templates et des base
de données
Pré-requis
● HTML 5/CSS 3, PHP
● Base de données
● Programmation en Python
Bibliographie : Bersini, H, Alexis, P, Degols G.(2018)
3 Apprendre la programmation web avec Python et Django.
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
4
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Plan du chapitre
1. Introduction
2. Rappels sur les langages web (HTML, CSS, PHP, ...)
3. Architecture Client/Serveur
4. Mise en place d’un serveur http
5. Modules cgi
5
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Historique/ARPANET
6
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
7
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
8
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
9
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
10
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
12
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Application Web
● C’est quoi une application web ?
○ Une application dont l'infrastructure d'exécution est
constituée :
■ d'un navigateur web pour l'interaction avec l'utilisateur
■ d'un serveur web pour la réalisation des services
■ éventuellement, d'autres serveurs pour la réalisation de services
spécialisés : sgbd, annuaire, authentification, …
● Sur quel type d’architecture l’installer ?
○ Souvent sur une architecture type Client/Serveur
■ Il s'agit de l'architecture habituelle utilisée sur les ordinateurs
■ Les clients (navigateurs) envoient des requêtes à un serveur
■ Le serveur retourne une réponse
13
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
14
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Application Web
● Aujourd’hui
○ Avec le Web 3.0, on s’oriente vers les services en ligne
■ Interaction avec un système d'information, banque, commerce,
réservation, météo…
○ Les services en ligne deviennent un des modes les plus
courants de développement d'applications
■ Offrent une
● interface fonctionnelle
■ Sont organisés autour d'une base de données stockant :
● Les données de l’application, sur l’administration de la base, sur le
site utilisé
● Offrent une interface d'administration de la base
■ le démon HTTPD n'est plus suffisant : on lui a ajouté un
15 programme d'échange : le cgi
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
16
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Le réseau
● L'application est connectée sur le réseau
17
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Application Web
● Intérêts de l’application web
○ Portabilité de la partie cliente
■ Fonctionne sur tout navigateur
○ Déploiement facilité des applications
■ Langage simplifié et standard
○ Accès important :
■ Pas de limitation sur le nombre d’accès
○ Sécurité : 1 seul protocole
■ On accède par une URL : seule et unique
● Inconvénient
18 ○ Difficile à mettre au point et à tester
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Application Web
● Pourquoi ça marche ?
○ grâce aux standards créés autour du Web
■ Logiciels serveur : Apache -40.18%, Nginx -27.66%, IIS -11.06%
■ Navigateurs : Google Chrome, Safari (pour les MAC), Microsoft Edge
(l'évolution d'Internet Explorer), Mozilla Firefox, Opera, Konqueror, ....
■ Nombre sites : 1,93 milliard de sites web 2022 (source Netcraft)
■ Top 5 des CMS : WordPress -30 millions de sites, Wix -7 millions de sites,
Progress Sitefinity -3,5 millions de sites, Squarespace -2,9 millions de sites
et Plesk -2,3 millions de sites.
■ Nombre de TLD : 364,6 millions en 2021
■ Sites les plus visités : [Link] - 15,63 milliards de visites par mois,
[Link] - 4,11 milliards de visites par mois, [Link] - 3,36
milliards de visites par mois, [Link] - 2,69 milliards de visites par mois,
[Link] - 1,50 milliard de visites par mois, [Link] - 1,46 milliard de
19 visites par mois, ...
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Application Web
● Les technologies de base utilisées
○ Un protocole d'échange entre clients et serveurs
standardisé : HTTP
○ Un mécanisme de nommage uniforme et extensible : URL
○ Un langage de description des ressources uniforme,
standardisé et ouvert : HTML
● Un consortium W3C qui veille et qui propose
○ réunit les plus grands spécialistes de la communauté Internet
■ proposent des recommandations et des standards
■ fournissent des documents de références
■ aident à la mise en œuvre,
20 ■ standardisent et débattent de la majorité des normes
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
HTML/Historique
● Années 1990 : HTML est créé par Tim Berner-Lee au
Centre Européen de Recherche Nucléaire (CERN)
● 1995 : HTML 2.0 normalisation par l’IETF 1
● 1996 : HTML 3.2 ajout des tables, des applets (Java), etc.
● 1998 : HTML 4.01 ajout des feuilles de styles, des frames, etc.
● 2000 : XHTML 1.0 reformulation de HTML 4 en XML 1.0
2002-2006 : XHTML 2.0 en cours de spécification
● 2007-maintenant : HTML5
○ Normalisation par le W3C depuis 1996.
■ World Wide Web Consortium [Link]
21
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
HTML/Langages à balises
● Un fichier HTML/XHTML est un fichier texte contenant des
balises appelant des commandes, dont l’action est limitée
au texte contenu entre la balise de début et la balise de fin.
○ Extension HTML : .htm ou .html ; XHTML : .xhtml
○ Balise de début : <commande>
○ Balise de fin : </commande>
○ Balise auto-fermante : <commande/>
○ Commentaires : <!--Ceci est un commentaire-->
● Remarques :
○ Les retours chariot, successions d’espaces et/ou de
tabulations ne sont pas pris en compte.
22
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
23
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
26

ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
27
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Titres
● Il y a 6 niveaux de titre :
○ <h1> ... </h1>
○ <h2> ... </h2>
○ <h3> ... </h3>
○ ...
○ <h6> ... </h6>
28
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Paragraphes
● L’élément de bloc <p> ... </p> permet de construire des
paragraphes et par un attribut.
● L’élément inline <br/> permet de contrôler les sauts de
lignes.
29
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
31
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Listes
● Chaque item d’une liste est déclaré par <li> …
● Liste simple : ● Liste numérotée :
<ul> <ol>
<li> item </li> <li> item </li>
<li> item </li> <li> item </li>
<li> item </li> <li> item </li>
</ul > </ol >
Éléments HTML5/Listes
33
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Tableaux
● Les éléments <thead> et
<tfoot> permettent de répéter l’
élément dans les tableaux sur
plusieurs pages.
● La balise <tr> déclare une ligne
● Les balises <td> (cellule
normale) ou <th> (cellule
titre/grasse) déclarent les cellule
dans la ligne
● Les attributs rowspan et
colspan fusionnent les cellules
34
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Tableaux
35
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Images
● La balise <img/> permet d’insérer une image
○ Les attributs suivants sont obligatoires :
■ src : l’URI où se situe l’image
■ alt : courte description de l’image
● Exemple
○ <img src="[Link]" alt="le logo Debian"/>
● Remarque : en spécifiant la taille des images, on accélère
le chargement (attributs width et heigth).
36
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Images
37
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Liens
● L’élément <a href="...">...</a> permet d’insérer un lien
○ Le contenu de l’élément est celui qui sera affiché en tant
que lien.
○ L’attribut href contient l’URI vers laquelle le lien pointe.
■ URL : [Link]
■ URL (mail) : [Link]
■ Fichier local avec chemin relatif : ./dossier/autre_page.html
■ Fichier local avec chemin absolu : /www/dossier/autre_page.html
● Exemple
○ <a href="lien_vers_une_autre_page.html">Texte affiché</a>
38
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Liens
39
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
● L’élément <form> ... </form> déclare un formulaire
○ Les attributs :
■ action : URL spécifiant le traitement des données (script, mail, etc.)
■ method : spécifie la méthode d’acheminement des données (GET
par défaut ou POST)
■ enctype spécifie la méthode d’encodage pour un envoi en POST
● application/x-www-form-urlencoded : encodage par défaut
● multipart/form-data : aucun encodage, (utilisé notamment
pour le file-upload)
● text/plain : seul les espaces sont remplacés par des ‘+’
40
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
● L’élément <fieldset>...</fieldset> permet de définir un
regroupement dans un formulaire.
● L’élément <legend>...</legend> permet de donner une
légende à un fieldset.
● L’élément <label>...</label> permet de définir une
étiquette.
● L’élément <input/> contient les attributs suivant :
○ type : spécifie le type d’élément à utiliser
○ name : donne un nom à l’élément
○ value : donne une valeur à l’élément
41
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
● <input type =" text " name =" champs " size =" 10 " value =" texte "/ >
● <input type =" password " name =" mdp" size =" 10 " maxlength =" 8 "/ >
● <input type =" email " value =" saisir un email valable "/ >
● <input type =" hidden " name =" steak " value =" haché "/ >
● <input type =" checkbox " name =" chk1 " value =" ok"/ >
● <input type =" checkbox " name =" chk2 " value =" ok" checked =" checked "/ >
● <input type =" radio " name =" choix " value =" rd1 "/ >
● <input type =" radio " name =" choix " value =" rd2 " checked =" checked "/ >
● <input type =" radio " name =" choix " value =" rd3 "/ >
Remarques :
● pour les types checkbox/radio si l’attribut value n’est pas spécifié, la
valeur par défaut est on
42 ● le type hidden permet de passer des valeurs d’une page à une autre
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
● Un élément <input/> de type :
○ submit : bouton d’envoi des données du formulaire au serveur
○ image : bouton avec image pour l’envoi des données du
formulaire
○ reset : bouton de restauration les valeurs par défaut du
formulaire
○ file : bouton d’ouverture de boite de recherche de fichiers
● Exemple
○ <input type="submit " name="action " value="Insert" />
○ <input type="file" name="unFichier " id="fichier" />
○ <input type="image" src="images/[Link] " name=" action
"value="Delete "/>
43 ○ <input type="reset " value="Reset "/>
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
● Un élément <textarea> permet de créer un champs texte
○ Exemple
<textarea rows =" 4 " cols =" 50 " >
Ce texte est éditable et sera envoyé lors du submit
</ textarea >
● La balise <select> permet de définir une liste
○ Attributs :
● multiple : permet de sélectionner plusieurs éléments de la liste
● size : si > 2 affiche un tableau, sinon un menu déroulant
44
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
● La balise <label> sert à nommer des champs
○ Attribut for indique champs décrit (attribut id)
○ Utile sur les radio et checkbox : augmente la surface
d’activation
● Exemple
45
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
46
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
47
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
Éléments HTML5/Formulaires
48
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
HTLML/Documentation et liens
● HTML5
○ w2schools : [Link]
○ Toutes les balises :
■ [Link]
● Validation
○ W3C (DTD based) : [Link] [Link]
(non-DTD) : [Link] L’indispensable
Firebug pour le débuggage !
● Compatibilité navigateurs
○ [Link]
49
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Description
● Cascading Style Sheets : Feuilles de style en cascade
○ Un document en mode texte
○ Utilisable par des documents HTML ou XML
○ Présentation identique de tous les documents HTML ou
XML Apporte la modularité du formatage
○ Séparation du contenu et de la présentation
○ 3 normes : CSS 1, CSS 2, CSS 3
50
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
55
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Éléments et propriétés
● Propriétés ([Link]
○ polices de caractères : font-size, font-style, font-family, font-weight
○ paragraphes : line-height, text-align, text-indent, text-transform
○ blocs : height, width, margin-right, margin-left, margin-top, margin-
bottom, padding-right, border-style, border-top-width, ...
56
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Cascade
● Tous les styles, peu importe où ils sont définis, se
fusionnent dans l’ordre de chargement, en une seule
feuille de style avec un système d’héritage et peuvent s’
écraser.
●
57
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Cascade
● Tous les styles applicables sont appliqués.
58
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Positionnement
● Fonctionnement par défaut :
○ Dans le flux, les éléments sont positionnés les uns en
dessous des autres
● Positionnement flottant (par rapport au bloc contenant) :
float: left;
● Positionnement absolu (par rapport au conteneur, hors
flux) : position: absolute; top: x px; left: y px;
● Positionnement fixe (absolu même en cas de scroll) :
position: fixed; top: x px; left: y px;
● Positionnement relatif (par rapport à sa position dans le
flux) : position: relative; top: x px; left: y px;
59 ○ [Link]
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Exemple d’utilisation
60
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Exemple d’utilisation
61
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
CSS/Exemple d’utilisation
62
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Description
● PHP : Hypertext Preprocessor
● Langage de script intégré à HTML/XHTML, côté serveur
● Le serveur parse les documents et interprète le code PHP
● Le client reçoit uniquement le résultat du script (une page
“générée”)
● Le code PHP est inclus dans des balises PHP : <?php
code-PHP ?> Voir : [Link]
63
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Fonctionnement
64
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Premier script
65
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Syntaxe de base
66
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Les variables
● Le typage des variables est dynamique
○ Syntaxe : $NomDeVariable[=val];
■ règle de nommage : $[a-zA-Z\_]([a-zA-Z0-9\_])*
■ sensibilité à la casse
■ assignation par :
● valeur : $var1=$var2;
● référence : $var1=&$var2;
■ Portée : locale à la fonction où elle est déclarée
67
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Variables superglobales
● Quelques tableaux superglobaux :
○ $_GLOBAL contient des références sur les variables de
l’environnement d’exécution global (clefs = noms des
variables globales)
○ $_SERVER variables fournies par le serveur web
○ $_GET et $_POST variables transmises par les méthodes
GET et POST du protocole HTTP
○ $_COOKIE, $_REQUEST, $_SESSION, $_FILES, $_ENV
68
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Les constantes
● Syntaxe : define("NOM_DE_LA_CONSTANTE", valeur)
● Les constantes :
○ ne commencent pas par $
○ sont définies et accessibles globalement dans tout le code
ne peuvent pas être redéfinies
○ ne peuvent contenir que des booléens, des entiers, des
flottants et des chaînes de caractères
● Exemple
define (" PHP "," PHP Hypertext Preprocessor ");
echo PHP ;
69
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Les types
70
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Les tableaux
● Principe : associations ordonnées de type clef ⇒ valeur
○ Déclaration : array( [clef =>] valeur, ...)
■ la clef est facultative, elle est de type entier ou chaîne de
caractères ; en cas d’omission, la valeur sera associée à la clef
d’indice max+1
■ la valeur peut être de n’importe quel type
71
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Exemple
74
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Chaines de caractères
● Les chaînes peuvent être déclarées avec :
○ Simples quotes : $t=’texte’;
○ Doubles quotes : $t="texte";
● Fonctionnement différent : entre doubles quotes, les
variables et les caractères échappatoires sont interprétés
75
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Chaînes de caractères
● Longueur : int strlen(string $ch)
● Répétition : string str_repeat(string $cr, int nb)
● Minuscules : string strtolower(string $ch)
● Majuscules : string strtoupper(string $ch)
● Initiales en majuscules : string ucwords(string $ch)
● 1ere lettre en majuscule : string ucfirst(string $ch)
● Suppression de caractères en début de chaîne : string
ltrim(string $ch, string liste)
● Suppression de caractères en fin de chaîne : string
rtrim(string $ch, string liste)
● Suppression de caractères en début et fin de chaîne : string
76 trim(string $ch, string liste)
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Fichiers
● Ouverture : $fichier=fopen("NOM", "MODE"); avec
MODE valant :
○ r, r+ : lecture et lecture/écriture, pointeur au début
○ w, w+ : écriture et lecture/écriture, avec création ou effacement,
pointeur au début
○ a, a+ : écriture et lecture/écriture, pointeur à la fin, avec création
○ x, x+ : création en écriture et lecture/écriture, pointeur au début,
erreur en cas d’existence du fichier
○ c, c+ : création en écriture et lecture/écriture, pointeur au début,
sans erreur
● Fermeture : fclose($fichier);
77 ● Présence : file_exists($fichier);
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Fichiers
● Lecture d’une ligne :
○ string fgets($fichier [, integer nbOctets])
● Lecture d’un caractère :
○ string fgetc($fichier)
● Ecriture d’une ligne :
○ integer fputs($fichier, string)
● Test de fin de fichier :
○ boolean feof($fichier)
● Positionnement :
○ fseek($fichier, int $position);
78
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Fichiers
79
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Formulaires
80
ISSEA : Institut Sous-régional de Statistique et d'Economie Appliquée
PHP/Formulaires
81