Un script python sur mon navigateur avec cgi

Henoc -  
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'espère que vous allez bien. Je suis débutant en python et je suis un cours en ligne. Je teste les exemples chez moi, mais quand, j'essaie de visualiser le rendu html avec le serveur cgi le navigateur m'affiche le code source.

Voici mon code python cgi et ensuite mon script python contenant le html.

Python cgi

import http.server

port = 80
adresse = ("", port)
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["//"]
httpd = server(adresse, handler)
httpd.serve_forever()


Le script python

print("Content-type: text/html; charset=utf-8")

html = """<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <title>Ma page web</title>
</head>
<body>
    <h1>Bonjour</h1>
</body>
</html>
"""

print(html)
A voir également:

2 réponses

mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Bonjour,

Avec ton code, j'observe le même problème.

En repartant de ce message et en l'adaptant un peu, le CGI fonctionne correctement avec le code suivant.

server.py

#!/usr/bin/env python3
from http.server import HTTPServer, CGIHTTPRequestHandler

if __name__ == '__main__':
    try:
        CGIHTTPRequestHandler.cgi_directories = ['/cgi-bin']
        httpd = HTTPServer(('', 8000), CGIHTTPRequestHandler)
        print(f"Running server. Use [ctrl]-c to terminate.")
        httpd.serve_forever()
    except KeyboardInterrupt:
        print(f"\nReceived keyboard interrupt. Shutting down server.")
        httpd.socket.close()


cgi-bin/cgi_demo.py

#!/usr/bin/env python3

print("Content-type: text/html\n\n")
print("<html><body>hello world!</body></html>")


Exécution

chmod a+x cgi-bin/cgi_demo.py
python3 server.py
firefox http://localhost:8000/cgi-bin/cgi_demo.py


(et dans le navigateur, on voit bien juste "hello world", comme prévu).

Bonne chance
0
Henoc
 
Bonsoir !
Déjà merci à mamiemando pour la volonté de bien vouloir m'aider, mais j'ai testé votre code ça m'affiche la même chose : le contenu de mon script c-à-d le code source au lieu de visualiser le script.

Donc ceci dans le navigateur :

#coding:utf-8
#!/usr/bin/env python3

print("Content-type: text/html\n\n")
print("<html><body>hello world!</body></html>")
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Les deux premières lignes devraient être permutées. Assure-toi que tu as bien donné les droits en exécution à
cgi_demo.py
. Sinon peut-être devrais-tu envisager
cherrypy
?
0