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 :

Différents langages traitent les données coté serveur : PHP, JavaScript avec Node.js, C++, PERL, Python...

Expérimenter

Créer un serveur web

import http.server

adr = ("", 5555)
mod = http.server.CGIHTTPRequestHandler
mod.cgi_directories = ["/"]

http.server.HTTPServer(adr, mod).serve_forever()

Créer deux pages HTML

Comme à votre habitude :

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 prénom :
    <input name="prenom"><br>
    Indiquez votre âge :
    <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("vous êtes une personne mineure.")
else:
  print("vous êtes une personne majeure.")
print("</body></html>")

Tester

Programmer

Gérer les erreurs

  1. Dans le programme précédent, que se passe-t-il lorsque l'utilisateur oublie d'entrer une donnée?
  2. Modifier la page bonjour.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 :

AstreRayon (km)Masse ( 1024 kg)
Soleil696 0001 990 000
Mercure2 4400,330
Vénus6 0504,87
Terre6 3805,97
Lune1 7400,0734
Mars3 4000,642

Demander au serveur de calculer

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 :

Le volume d'une sphère se calcule avec la relation : V = 4.π.R33