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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    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 Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

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

    essaye de renommer tes .py en .py.cgi

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

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

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

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

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    et un chmod 755 sur chaque fichier?

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

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

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 45
    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()

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