Un script python sur mon navigateur avec cgi

Fermé
Henoc - Modifié le 14 avril 2022 à 17:48
mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 - 20 avril 2022 à 00:57
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 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
Modifié le 14 avril 2022 à 18:24
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
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 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
20 avril 2022 à 00:57
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