Ignorer la navigation

Code serveur

Code de traitement côté serveur

Créer dans EduPÿthon le programme server.py suivant:

import http.server

PORT = 8888
server_address = ("", PORT) 
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["/"]
print("Serveur actif sur le port :", PORT)

httpd = server(server_address,handler)
httpd.serve_forever()

Une fois lancé, ce script réalise un serveur HTTP à l'écoute sur le port 8888.

Créer la page web dynamique index.py suivante:

# coding: utf-8

import cgi 

form = cgi.FieldStorage()
print("Content-type: text/html; charset=utf-8\n")

print(form.getvalue("nom"))
html = """<!DOCTYPE html>
<head>
<title>Mon programme</title>
</head>
<body>
 <form action="/index.py" method="get">
<input type="text" name="nom" placeholder="Votre nom">
<input type="submit">
</form>
</body>
</html>
"""
print(html)

Ouvrir la page index.py sur votre serveur local: http://localhost:8888/index.py

Cette page contient un formulaire ainsi que le code permettant de recevoir et traiter les données transmises.

La fonction print() permet de retourner les données (code HTML de la page) au client.

form.getvalue("nom") permet de récupérer le paramètre nommé "nom" qui a été transmis (par GET ou POST) dans la requête HTTP par le client.

Une calculette

Adapter l'exemple ci-dessous afin de réaliser une addition.

Etat initial de la page:

init

Les valeurs des nombres a et b seront transmis par méthode GET dans l'url.

add

Pour cela:

  • Convertir les valeurs récupérées du formulaire en nombre avec la fonction float  (permet de parser une chaîne afin d'extraire un nombre décimal).
  • Convertir le résultat de l'addition en chaîne de caractère avec la fonction str().
  • Concaténer le résultat de l'addition avec le code HTML de la page en utilisant l'opérateur +.
  • Pour parfaire le comportement de la page, vérifier que les nombres ont bien été transmis en comparant les données récupérées avec getvalue avec None.