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 :

Les applications web et Python


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut Les applications web et Python
    Bonjour à tous, je suis nouveau sur Developpez, ainsi que dans la programmation Python.

    Je souhaiterais développer une application web avec Python et CGI, seulement voila, je suis complètement perdu !

    Après 2 jours de recherche, je fini par vous exposer mon problème :

    (je rappelle que je débute, donc c'est questions vous paraissent sûrement évidente, mais pas pour moi !! )

    - Je n'arrive tout simplement pas à exécuter un script Python placé dans un dossier cgi-bin (hébergé sous OVH)(Internal Server Error), je regarde donc dans l'aide d'OVH, Google, ... et tout ce que je trouve, c'est qu'il faut mettre les chmod 755 au dossier cgi-bin, ce que je fait, mais rien n'y fait

    J'ai essayé pleins de bidules (mod_python, ...) qui n'ont sûrement rien avoir, mais j'ai quand même essayé.

    Finalement, je vous demande donc de l'aide pour débuter avec le CGI et Python

    Voici les scripts : (scripts venant de la doc .pdf : Apprendre à Programmer avec Python, trouvé sur ce site même)

    index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <HTML>
    <HEAD><TITLE>Exercice avec Python</TITLE></HEAD>
    <BODY>
    <DIV ALIGN="center">
    <IMG SRC="penguin.gif">
    <H2>Page Web interactive</H2>
    <P>Cette page est associée à un script Python</P>
    <FORM ACTION="../../cgi-bin/elyoo/input_query.py" METHOD="post">
    <INPUT TYPE="submit" NAME="send" VALUE="Exécuter le script">
    </FORM>
    </DIV></BODY></HTML>
    input_query.py
    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
     
    #! /usr/bin/python
    import cgi
     
    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>
    """

    Question :

    Content-type: text/html\n et Content-type: text/html -> à la même fonction?

    print_result.py :
    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
    22
    23
    24
    25
    26
    27
    28
    #! /usr/bin/python
    # Traitement des données transmises par un formulaire HTML
     
    import cgi                                                       # Module d'interface avec le serveur
    web
    form = cgi.FieldStorage()                                        # Réception de la requête utilisateur
                                                                     # il s'agit d'une sorte de dictionnaire
    if form.has_key("phrase"):                                       # La clé n'existera pas si le champ
    text = form["phrase"].value                                      # correspondant est resté vide
    else:
    text ="*** le champ phrase était vide ! ***"
    if form.has_key("visiteur"):                                     # La clé n'existera pas si le champ
    nomv = form["visiteur"].value                                    # correspondant est resté vide
    else:
    nomv ="mais vous ne m'avez pas indiqué votre nom"
    print "Content-Type: text/html\n"
    print """
    <H3>Merci, %s !</H3>
    <H4>La phrase que vous m'avez fournie était : </H4>
    <H3><FONT Color="red"> %s </FONT></H3>""" % (nomv, text)
    histogr ={}
    for c in text:
    histogr[c] = histogr.get(c, 0) +1
    liste = histogr.items()                                           # conversion en une liste de tuples
    liste.sort()                                                      # tri de la liste
    print "<H4>Fréquence de chaque caractère dans la phrase :</H4>"
    for c, f in liste:
    print 'le caractère <B>"%s"</B> apparaît %s fois <BR>' % (c, f)
    Quand je regarde le log avec easyPHP, il me donne l'erreur : couldn't spawn child process: d:/site internet/easyphp1-8/cgi-bin/elyoo/input_query.py


    Merci d'avance, et je rappelle que je débute

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Salut,

    essaye de renommer tes .py en .py.cgi
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Sa me donne toujours l'erreur 500

    Il ne faut pas faire quelque chose côté serveur?

  4. #4
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    et un chmod 755 sur chaque fichier?
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    oui, 755 sur les fichiers, et sur le dossier cgi-bin

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Points : 50
    Points
    50
    Par défaut
    C'est un serveur dédié chez OVH ?

    Pour info chez dedibox avec une Ubuntu "Feisty Fawn" pour faire un "hello world" en Python CGI:

    Je commence d'abord par créer un dossier cgi-bin, bizarrement ils ont "oubliés" de le créer alors qu'il est dans le fichier de configuration Apache (sous Edgy /usr/lib/cgi-bin existe par défaut)

    Donc,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo mkdir /usr/lib/cgi-bin
    Je crée dans ce dossier un fichier de test test-cgi.py, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/python
     
    print "Content-type: text/html" 
    print
     
    print "<html><body>Hello World</body></html>"

    puis je donne les droits associés pour mon fichier test-cgi.py:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sudo chmod +rx test-cgi.py
    puis pour voir "hello world" je visite avec mon navigateur: http://url-de-la-box/cgi-bin/test.py

    Pour info dans /etc/apache2/sites-available/default il y a notamment ceci par défaut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
           ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>
    Il est aussi possible d'avoir une batterie de test en faisant un script comme celui-ci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/python
    import cgi
     
    cgi.test()

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Salut,

    non, je ne possède pas une offre serveur dédié.

    mes pages web se situe dans un dossier www à la racine du serveur, et un autre dossier cgi-bin également à la racine, où je suis censé y mettre mes scripts

    Voila comment sa se présente : http://guides.ovh.net/FtpProbleme

    D'après ce que j'avais lus, côté serveur, c'était déjà configuré, non?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    Points : 50
    Points
    50
    Par défaut
    D'après ce que j'avais lus, côté serveur, c'était déjà configuré, non?
    Dans ce cas j'imagine que c'est effectivement déjà configuré. Ne connaissant pas les offres OVH mutualisées je ne peut aider, sorry.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Je progresse, j'ai remarqué en local, que en changeant la source pour l'interface de l'interpréteur du fichier input_query.py, par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #! C:\Python25\python.exe
    , j'obtennais un tout autre message d'erreur, qui fait plus penser à une erreur de syntaxe, que un problème serveur :
    SyntaxError: Non-ASCII character '\\xe9' in file d:\\SITEIN~1\\EASYPH~1\\cgi-bin\\elyoo\\INPUT_~1.PY on line 13, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details\n

    Est - ce que le problème pourrait venir de cela? Que le chemin de l'interpréteur d'OVH est différent?

    EDIT : Voici le détail de mon offre chez OVH, en descendant un peu, on peu voir que le Python est pris en compte
    http://www.ovh.com/fr/produits/60gp.xml

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    Je crois bien que sa vient du chemin de l'interpréteur :
    Car ceci marche parfaitement chez moi en local :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #! C:\Python25\python.exe
     
    print "Content-type: text/html\n"
    print """
    <H3><FONT COLOR="Royal blue">
    Page web produite par un script Python
    </FONT></H3>
    """
    Tandis que ce code depuis OVH ne fonctionne pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/python
     
    print "Content-type: text/html\n"
    print """
    <H3><FONT COLOR="Royal blue">
    Page web produite par un script Python
    </FONT></H3>
    """

  11. #11
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Je viens de faire un essai sur un xxlplan (ovh, mutualisé).

    J'ai fait quelques changements :

    input_query.cgi :
    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
    22
    23
    #!/usr/bin/python
    # On importe le module nécessaire
    import sys
     
    # On redirige les erreurs vers la sortie standard
    sys.stderr = sys.stdout
    import cgi
     
    print "Content-type: text/html\n"
    print """
    <H3><FONT COLOR="Royal blue">
    Page web produite par un script Python
    </FONT></H3>
     
    <FORM ACTION="/test1/print_result.cgi" 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>
    """
    print_result.cgi:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #!/usr/bin/python
    # On importe le module nécessaire
    import sys
     
    # On redirige les erreurs vers la sortie standard
    sys.stderr = sys.stdout
    # Traitement des données transmises par un formulaire HTML
     
    import cgi                                                       # Module d'interface avec le serveur
    # import web
    form = cgi.FieldStorage()                                        # Réception de la requête utilisateur
                                                                     # il s'agit d'une sorte de dictionnaire
    if form.has_key("phrase"):                                       # La clé n'existera pas si le champ
     text = form["phrase"].value                                      # correspondant est resté vide
    else:
     text ="*** le champ phrase était vide ! ***"
    if form.has_key("visiteur"):                                     # La clé n'existera pas si le champ
     nomv = form["visiteur"].value                                    # correspondant est resté vide
    else:
     nomv ="mais vous ne m'avez pas indiqué votre nom"
     
    print "Content-Type: text/html\n"
    print """
    <H3>Merci, %s !</H3>
    <H4>La phrase que vous m'avez fournie était : </H4>
    <H3><FONT Color="red"> %s </FONT></H3>""" % (nomv, text)
    histogr = {}
    for c in text:
     histogr[c] = histogr.get(c, 0) +1
     liste = histogr.items()                                           # conversion en une liste de tuples
    liste.sort()                                                      # tri de la liste
    print "<H4>Fréquence de chaque caractère dans la phrase :</H4>"
    for c, f in liste:
     print 'le caractère <B>"%s"</B> apparaît %s fois <BR>' % (c, f)
    Les points à surveiller :
    - Les fichiers doivent avoir l'extension CGI.
    - Attention à la première ligne : #!/usr/bin/python sans espace et sur la 1ere ligne du fichier source (pas d'espace avant).
    - OVH préconise l'attribut 705 pour ces fichiers.

    Je laisse les fichiers en test sur mon hébergement, je te mp les codes pour y accéder.

    [Edit]Aucune nouvelle, j'ai supprimé les fichiers que j'avais laissé en test.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    woups, je ne m'attendais plus à recevoir de réponse

    Entre temps, j'ai laisser tomber mon projet, pour me consacrer à Linux (Ubuntu ), j'en suis ravis

    Sinon, merci à toi d'avoir pris ton temps, je testerai ces fichiers dés demain, sur mon ftp, si j'ai le temps

    Encore merci

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    je viens d'essayer, sa n'a pas l'air de marcher, à mon avis que le problème vient de moi

    ce n'est pas grave, je me remettrais au Python plus tard, je n'en est plus besoin pour l'instant, merci de votre aide

  14. #14
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Juste une question: pourquoi CGI et pas Django?

Discussions similaires

  1. Comparaison entre les applications web et RCP
    Par chiraz86 dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 21/04/2010, 14h43
  2. la plate-forme .NET et les applications web distribuées
    Par miss_java dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 10/04/2008, 00h29
  3. Hibernate pour les application Web ?
    Par ygrim dans le forum Hibernate
    Réponses: 7
    Dernier message: 29/01/2008, 17h13
  4. Automatiser les tâches Web avec Python
    Par mpereg dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 07/06/2007, 22h49
  5. Utilité de javascript dans les applications web
    Par Skan dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 30/12/2005, 22h55

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