IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Python cgi et HTML


Sujet :

Réseau/Web Python

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut Python cgi et HTML
    Voila bonjour a tous ,

    je developpe un site internet en Html et je fais un lien avec un script python en cgi pour télécharger un fichier. Uploader un fichier.
    Sur mon site j'ai tous balises ok.
    Mais je n'arrive pas à faire fonctionner mon cgi qui y est associé.

    voici le cgi associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/usr/bin/python
    import commands,cgi
    form = cgi.FieldStorage()
    print """Content-Type: text/html"""
    print
    print """<html>"""
    print """<head><title>Soumission fichier</title></head>"""
    print """<body>"""
        if form.has_key("filename"):
        f=open("nom_fichier_local","w")
        f.write(form["filename"].file.read())
        f.close()
    print """<p> Download ok"""
    print """</body></html>"""
    Est que quelqu'un peut m'aider pour écrire ma cgi qui enregistre le fichier dans répertoire?
    Merci la je m'en sors pas.

    Cathy

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'utilise du Python sous CGI pour une calculatrice en ligne depuis 2008, et ça marche plutôt pas mal (http://www.jpvweb.com/cgi-bin/calculextcgi.py).

    Je me suis même un peu amusé à tester une version mini avec un serveur construit en Python en moins de 5 minutes: http://python.jpvweb.com/mesrecettes...lculatrice_cgi. Comme ça fait longtemps que j'ai fait ça, je viens de ré-essayer et ça marche toujours (Python 2.7). Lance le calcul de "fact(100)": c'est toujours impressionnant. Cependant, il ne faut pas oublier de mettre à jour l'adresse du serveur utilisé sur son PC (genre: adresse="http://localhost:8000/cgi-bin/calculcgi.py"). Tu y trouveras peut-être les infos qui te manquent.

    En résumé, le script python en CGI:

    - contient au début une ligne comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Content-type: text/html\n\n"
    - sous Unix, le script doit être exécutable

    - sous Unix, les fins de lignes doivent être '\n' (et non '\r\n' comme pour Windows)

    - on appelle le script python CGI avec son adresse et en lui passant des données par GET ou POST (formulaire). Le script en a connaissance grâce à cgi.FieldStorage (en testant la présence du nom du champ de saisie comme dans ton code).

    - le script traite les données comme prévu, et renvoie à l'appelant du code html avec les résultats. Si nécessaire, ce code se place pour permettre la requête suivante (on crée une boucle).

    - je ne l'utilise pas, mais le module cgitb (cgitb.enable(...)) semble permettre d'avoir des messages d'erreur plus précis que l'erreur 500.

    A noter que le module "commands" qui est importé dans ton code, et qui est spécifique à unix, est déprécié depuis Python 2.6: il faut utiliser subprocess à la place.

  3. #3
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut Essai de calculatrice.py sur Raspberry
    Bonjour,

    Peut-être qu'il y a un lien actif sur ce post :

    J'essaye de faire exécuter des scripts python via web exactement ce qui est proposé.

    Le serveur démarre bien par contre dès que je souhaite lancer le script via :

    http://192.168.1.7:8000/cgi-bin/calculcgi.py

    j'obtient l'erreur suivante sur mon poste déporté ( windows xp )

    Error response

    Error code 404.

    Message: No such CGI script ('/cgi-bin/calculcgi.py').

    Error code explanation: 404 = Nothing matches the given URI.


    D'où vient le problème ?

    Je n'ai pas rendu le code python exécutable, juste adapté les chemins pour tout

    placer dans /var/www

    Merci du coup de main.

    P.G

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Ok pour t'aider, mais ce n'est pas facile de faire du dépannage de ce genre: j'ai besoin de plus d'infos.

    D'abord, tu dis que "Je n'ai pas rendu le code python exécutable" alors que moi, j'ai dit qu'il fallait le faire (sous Linux): donc, fais-le!

    Tu dis que tu veux appeler depuis le web, mais compte tenu de l'adresse que tu donnes, http://192.168.1.7, tu es en réseau local.

    Tu n'as pas de pare-feu sur ton serveur linux? Ou, si oui, tu as ouvert le port 8000?

    Pour l'adresse, je suppose que tu as corrigé dans le code l'adresse que j'ai mise pour l'exemple.

    Tu me montres que le cgi ne marche pas, mais as-tu essayé la page index.html que je mets dans mon tuto? Si ça marche, c'est que le serveur fonctionne: ce serait déjà ça.

    Apparemment, tu as mis ton serveur dans /var/www, mais ce n'est pas une bonne idée: laisse cet emplacement pour le serveur web normal (port 80) et place ton serveur web spécial (port 8000) ailleurs.

    Donc, côté serveur, tu as créé sur ta machine Linux un répertoire quelque part, par exemple "serveurweb", avec un sous répertoire "cgi-bin". Puis, en console, tu te mets dans le répertoire "serveurweb", et tu fais: "python -m CGIHTTPServer". S'il n'y a pas d'erreur, tu as le serveur web dans ce répertoire, et la place pour les scripts cgi dans "serveurweb/cgi-bin".


    Bref, j'ai bien compris le message d'erreur, mais il faut que tu précises un peu mieux ce que tu as fait, et en particulier par rapport aux spécifications que j'ai données: ton code a-t-il bien des '\n' en fin de ligne, même si tu l'as écrit sous Windows? etc...

    A toi de jouer!

  5. #5
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut
    Bonjour et merci beaucoup de ton aide,

    après le post j'ai continué mes essais alors voilà les résultats :

    Les bonnes nouvelles :

    1) ca fonctionne mais sur le raspberry je lance la commande en sudo
    sudo python -m CGIHTTPServer

    2) je sais tout est au même endroit disons que c'est pour le temps des essais /var/www

    3) en fait le fichier était exécutable car je lui ai mis les droits avec sudo chmod 777 *.* dans
    le dossier /var/www

    4) oui je suis en réseau local ( désolé .. )


    Une question :

    Fort du succès de ton code j'en essaye un autre au même endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/usr/bin/python
    # -*- coding:Utf-8 -*-
     
    # Affichage d'un formulaire HTML simplifié :
    print "Content-Type: text/html\n"
     
     
    print """
    <H3><FONT COLOR="Royal blue">
    Page web produite par un script Python
    </FONT></H3>
     
    <FORM ACTION="print_result.py" METHOD="post">
    <P>Veuillez entrer votre nom dans le champ ci-dessous, s.v.p. :</P>
    <P><INPUT NAME="visiteur" SIZE=20 MAXLENGTH=20 TYPE="text"></P>
    <P>Veuillez également me fournir une phrase quelconque :</P>
    <TEXTAREA NAME="phrase" ROWS=2 COLS=50>Mississippi</TEXTAREA>
    <P>J'utiliserai cette phrase pour établir un histogramme.</P>
    <INPUT TYPE="submit" NAME="send" VALUE="Action">
    </FORM>
    """
    A partir d'une page html située dans le dossier /var/www
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <HTML>
    <HEAD><TITLE>Exercice avec Python</TITLE></HEAD>
    <BODY>
     
    <DIV ALIGN="center">
    <IMG SRC="Pingouin.gif">
    <H2>Page Web interactive</H2>
    <P>Cette page est associée à un script Python</P>
     
    <FORM ACTION="http://192.168.1.7:8000/cgi-bin/input_query.py" METHOD="post">
    <INPUT TYPE="submit" NAME="send" VALUE="Exécuter le script">
    </FORM>
     
    </DIV></BODY></HTML>
    Là l'appel de la page web provoque l'affichage du pingouin et du bouton
    l'appui sur le bouton affiche bien la page générée par python par contre
    l'exécution du code python donne cette erreur :

    Error response

    Error code 404.

    Message: No such CGI script ('/cgi-bin/print_result.py').

    Error code explanation: 404 = Nothing matches the given URI.

    Voilà, en tout cas merci beaucoup pour cet exemple qui permet de mettre en place la compréhension
    de bien des aspects de python / Linux and all. En particulier les modes user / group / perso sudo ne
    sont pas encore des réflexes

    A +.

    P.G

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 679
    Par défaut
    Salut,

    Vous écrivez:

    Citation Envoyé par P.G Voir le message

    2) je sais tout est au même endroit disons que c'est pour le temps des essais /var/www

    3) en fait le fichier était exécutable car je lui ai mis les droits avec sudo chmod 777 *.* dans
    le dossier /var/www/
    Si le serveur va chercher dans "/cgi-bin", il ne trouvera pas le script.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut
    Hello,

    Oui je n'ai pas été assez clair,

    l'arborescence est celle-ci :

    /var
    /www c'est à ce niveau qu'est lancé le serveur et que sont les fichiers html
    /cgi-bin dans ce dossier les fichiers *.py

    Merci de votre réponse.

    A +

    P.

  8. #8
    P.G
    P.G est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Par défaut
    Hum hum
    /var/www/cgi-bin est un sous dossier de var/www

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2009, 11h37
  2. URL Rewriting Python - CGI - Apache
    Par romain404 dans le forum Apache
    Réponses: 11
    Dernier message: 04/06/2009, 11h32
  3. Python + cgi
    Par carnifex dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 16/05/2008, 09h54
  4. Python et le HTML
    Par Iria77 dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/04/2007, 16h59
  5. Comment utliser Python à patir du HTML ?
    Par Promeneur dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 23/12/2005, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo