PYTHON
APPLICATIONS WEB COTE SERVEUR
Introduction
Dans une application Web, les données peuvent être traitées coté serveur ou coté client.
De manière simplifiée :
- Au début des années 2000, les données étaient traitées coté serveur et affichées coté client.
- De nos jours, avec le développement du JavaScript, les données se traitent aussi bien coté serveur que coté client.
Différents langages traitent les données coté serveur : PHP, JavaScript avec Node.js, C++, PERL, Python...
- Avantage : Les données peuvent être sauvegardées sur le serveur.
- Inconvénients :
- Envoyer des données au serveur et attendre le retour des données traitées prend un peu de temps.
- Le traitement des données coté serveur augmente la charge du serveur.
- Particularité : Le client n'a pas accès au code qui traite les données.
Expérimenter
Créer un serveur web
- Avec l'EDI EduPython, recopiez le code ci-dessous pour créez un serveur web démarrant sur le port 5555.
import http.server
adr=("", 5555)
mod=http.server.CGIHTTPRequestHandler
mod.cgi_directories=["/"]
http.server.HTTPServer(adr, mod).serve_forever()
- Enregistrez dans le dossier de votre choix, sur votre clé USB par exemple.
Créer deux pages HTML
Comme à votre habitude :
- Utilisez un éditeur de texte (Notepad++, Sublime Text).
- Vérifiez la sélection de l'encodage UTF-8.
- Enregistrez les deux fichiers ci-dessous dans le même dossier que celui choisi pour le serveur.
Page index.py
print("Content-type: text/html; charset=utf-8\n")
html="""<!DOCTYPE html>
<html>
<head>
<title>Saisie d'un nom</title>
<meta charset="utf-8">
</head>
<body>
<form action="/bonjour.py">
Entrez votre nom :
<input name="prenom"><br>
Indiquez votre age :
<input name="age"><br>
<button>Valider</button>
</form>
</body>
</html>"""
print(html)
Page bonjour.py
import cgi
formulaire=cgi.FieldStorage()
prenom=formulaire.getvalue('prenom')
age=formulaire.getvalue('age')
age=int(age)
print("Content-type: text/html; charset=utf-8\n")
print("<!DOCTYPE html><html><head><meta charset=\"utf-8\"></head><body>")
print("Bonjour "+prenom+". ")
if (age<18):
print("Tu es une personne mineure.")
else:
print("Tu es une personne majeure.")
print("</body></html>")
Tester
- Démarrez votre serveur web.
- Testez votre serveur en tapant dans la barre d'adresse d'un navigateur :
- http://localhost:5555/index.py
- http://127.0.0.1:5555/index.py
- Retrouvez l'adresse IP de votre PC et proposez à votre voisin (ou voisine) de tester votre serveur web.
Programmer
Gérer les erreurs
- Dans le programme précédent, que se passe-t-il lorsque l'utilisateur oublie d'entrer une donnée?
- Modifier la page
bonjour.py
:
- Pour demander à l'utilisateur de recommencer en cas d'erreur.
- En ajoutant un lien vers la page
index.py
.
Récupérer les données sur le serveur
Lorsque les données sont nombreuses, il est préférable de charger sur le client que celles demandées.
Réalisez une application web :
- Qui demande à l'utilisateur le nom d'un astre.
- Qui retourne :
- Si l'astre est répertorié son rayon et sa masse.
- Sinon un message indiquant que l'astre n'est pas référencé.
Astre | Rayon (km) | Masse ( 1024 kg) |
Soleil | 696 000 | 1 990 000 |
Mercure | 2 440 | 0,330 |
Vénus | 6 050 | 4,87 |
Terre | 6 380 | 5,97 |
Lune | 1 740 | 0,0734 |
Mars | 3 400 | 0,642 |
Pour aller plus loin
On choisit ici d'envoyer au serveur les données pour qu'il les traite puis retourne au client son résultat.
Réalisez une application web :
- Qui demande à l'utilisateur de rentrer, pour un astre :
- Son rayon, en km
- Sa masse, en 1024 kg
- Qui retourne :
- Son volume, en km3
- Sa masse volumique, en kg/dm3
Le volume d'une sphère se calcule avec la relation :
V = 4.π.R33