# Créer un serveur web rapidement en python

Base de données
Websocket & Crossbar

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

Base de données
Websocket & Crossbar