Il peut être intéressant, dans certains cas, d'implémenter un serveur web dans votre application. Cela permet notamment une communication entre vos programmes via un navigateur. En Python créer un serveur web , c'est quelques ligne de code:
Serveur web python 2
Voici le code pour créer un serveur web en python 2 :
server.py
#!/usr/bin/python import BaseHTTPServer import CGIHTTPServer PORT = 8888 server_address = ("", PORT) server = BaseHTTPServer.HTTPServer handler = CGIHTTPServer.CGIHTTPRequestHandler handler.cgi_directories = ["/"] print "Serveur actif sur le port :", PORT httpd = server(server_address, handler) httpd.serve_forever()
Serveur web python 3
Et voici le code pour créer un serveur web en python 3 :
server.py
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()
Créer une page web
Créez un fichier index.py à la racine de votre projet.
index.py
# coding: utf-8 import cgi form = cgi.FieldStorage() print("Content-type: text/html; charset=utf-8\n") print(form.getvalue("name")) html = """<!DOCTYPE html> <head> <title>Mon programme</title> </head> <body> <form action="/index.py" method="post"> <input type="text" name="name" value="Votre nom" /> <input type="submit" name="send" value="Envoyer information au serveur"> </form> </body> </html> """ print(html)
Ouvrez votre navigateur et indiquez-lui l'url de votre serveur web, dans notre cas ce sera localhost:8888/index.py
Indiquez votre nom puis cliquez sur le bouton " Envoyer ":
A noter que python ne fait pas de différences entre POST et GET, vous pouvez passer une variable dans l'url le résultat sera le même:
http://localhost:8888/index.py?name=Olivier%20ENGEL
Afficher les erreurs sur votre page web
Vous pouvez ajouter une fonction qui affichera les erreurs rencontrées par python (mode debug):
import cgitb; cgitb.enable()
Afficher les variables d'environnement
Vous pouvez afficher toutes les informations concernant votre serveur web / page en cours en appelant la méthode test() :
cgi.test()
Pour approfondir le sujet: Doc python CGI