python et IIS

Installation

Il est possible d’utiliser python comme language de programmation web sur un serveur web IIS. Pour cela il faut avoir tout d’abord installer coorectement python. Puis par la suite en utilisant mmc et le modul enfichable IIS il faut paramétrer le site web ainsi: dans les propriétés du site web, onglet répertoire de base (ou virtuel ou répertoire tout court) il faut vérifier qu’il existe bien un nom les paramètres d’application. Il faut aussi autoriser l’éxecution des scripts. Puis il va falloir faire le lien entre les fichiers *.py et le programme python. Pour cela dans le même onglet, les paramètres d’application , cliquer sur le bouton Configuration et ajouter un mappage d’application:

extension .py
exécutable C:\Python25\python.exe %s %s
verbes tous

Arrêter/ redémarrer le serveur IIS. Puis dans le répertoire de votre serveur web ajouter un fichier test.py

import cgi
import os
print "Content-Type: text/html"
print
print """
<html>
<body>
<h1>La configuration est correcte.</h1>
"""
print os.getcwd()
print cgi.print_environ()
print cgi.print_directory()
print """
</body>
</html>
"""

Utilisation

<html>
<head>
    <title>Formulaire de contact</title>
</head>
<body>
    <form action="/cgi-bin/reponse.py" method="post">
        <label for="nom">Nom</label><input type="text" name="nom" id="nom" /><br/>
        <label for="prenom">Prénom</label><input type="text" name="prenom" id="prenom" /><br/>
        <label for="email">E-mail</label><input type="text" name="email" id="email" /><br/>
        <label for="objet">Objet de votre demande</label>
        <input type="text" name="objet" id="objet" /><br/>
        <label for="message">Message</label>
        <textarea name="message" id="message"></textarea><br/>
        <input type="submit" value="envoyer" />
    </form>
</body>
</html>
#!/usr/bin/python
print "Content-Type: text/html"
print
import cgi
form=cgi.FieldStorage()
print """%s %s,<br/>
%s<br/>
objet de la demande : %s<br/>
%s"""%(form.getvalue("prenom"), form.getvalue("nom"),
form.getvalue("email"), form.getvalue("objet"), form.getvalue("message"))
Python@@@
La classe Fieldstorage va nous permettre de récupérer les données transmises. Elle dispose des méthodes has_key(), keys() et len() que l´on trouve dans les dictionnaires. Cette classe dispose de méthodes supplémentaires, dont :
* getvalue(clé, valeur_par_défaut) qui permet de récupérer la valeur transmise ou de lui substituer une valeur. Ce second paramètre est optionnel.
* getlist() qui permet de récupérer les valeurs dans le cas où plusieurs champs portent le même nom.

!upload de fichier
Xml@@@
<html>
<head>
    <title>Envoi de C.V.</title>
</head>
<body>
    <form action="/cgi-bin/envoi_cv.py" method="post" enctype="multipart/form-data">
        <label for="nom">Nom</label><input type="text" name="nom" id="nom" /><br/>
        <label for="prenom">Prénom</label><input type="text" name="prenom" id="prenom" /><br/>
        <label for="cv">C.V.</label><input type="file" name="cv" id="cv" /><br/>
        <input type="submit" value="envoyer" />
    </form>
</body>
</html>
#!/usr/bin/python
print "Content-Type: text/plain"
print
import cgi
form = cgi.FieldStorage()
print """Nom du fichier : %s
type MIME : %s
contenu :
%s"""%(form["cv"].filename, form["cv"].type, form["cv"].file.read())

ou

#!/usr/bin/python
import cgi
form = cgi.FieldStorage()
nom = form["nom"].nom
contenu_cv = form["cv"].file.read()
fichier = open("cv/"+nom, "a")
fichier.write(contenu_cv)
fichier.close()

plus d’info içi http://ferry.eof.eu.org/lesjournaux/pg/public_html/x11850.html