Créez un serveur HTTP local simple avec CGI en Python.
J'ai essayé d'écrire un script CGI en Python au lieu de Perl si c'était simple.
- CGI est une abréviation de Common Gateway Interface, qui est une fonction permettant d'afficher le résultat du traitement par programme sur un serveur Web. *
(Cité de Qu'est-ce que CGI)
En bref, je pense que c'est une fonction qui peut prendre une valeur d'un navigateur, la traiter côté serveur, et la renvoyer à nouveau pour créer une page Web dynamique.
Tout d'abord, nous devons configurer un serveur, nous allons donc configurer un serveur HTTP localement et afficher la page Web.
Écrivez Index.html dans le répertoire avec lequel vous souhaitez travailler pour créer la page que vous souhaitez afficher. Cette fois, les données à envoyer sont la nourriture et la saison.
index.html
<html>
<head>
<title>Test du serveur</title>
<meta http-equiv="content-type" charset="utf-8">
</head>
<body>
<form action="/cgi-bin/cgi_test.py" method="POST">
<div>
<label for="name">Nourriture favorite</label>
<input type="text" name="food" value="pomme">
<label for="season">Saison préférée</label>
<input type="text" name="season" value="hiver">
<button>Envoyer</button>
</div>
</form>
</body>
</html>
Ce à quoi vous devez faire attention ici, c'est le chemin de l'action
"/cgi-bin/Nom du fichier de script CGI"
Est d'être. Il s'agit du chemin d'accès relatif au fichier de script CGI, et vous créerez un fichier de script ultérieurement en utilisant le nom de fichier de script spécifié ici.
Essayez de démarrer le serveur une fois. Démarrez-le dans le terminal.
$ python3 -m http.server 8080
Une fois exécuté, il ressemblera à celui ci-dessous. J'ai utilisé 8080 pour le moment, mais n'importe quel autre numéro convient tant qu'il peut être utilisé.
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
Maintenant, vérifiez si cela fonctionne. http://localhost:8080/ Si tout se passe bien, cela ressemblera à ceci: À propos, même si vous appuyez sur le bouton d'envoi, vous devriez toujours obtenir une erreur.
Maintenant, écrivons le script CGI en Python. Créez un répertoire nommé cgi-bin dans le répertoire de travail (le répertoire où se trouve index.html) et écrivez-y le script CGI. La structure du fichier ressemble à ceci.
.
├── cgi-bin
│ └── cgi_test.py
└── index.html
Utilisez également le nom spécifié dans index.html pour le nom de fichier ici.
cgi_test.py
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print("Content-Type: text/html; charset=utf-8\n\n")
print("<html><body>")
form = cgi.FieldStorage()
for key in form:
value = form[key].value
print('<p>%s: %s</p>' % (key, value))
print("</body></html>")
Assurez-vous d'écrire #! / Usr / bin / env python
sur la première ligne ici.
Si vous n'écrivez pas ceci, vous obtiendrez l'erreur «Erreur OS: [Errno 8] Erreur de format Exec:« ».
Cela spécifie un interpréteur, mais veuillez vous référer aux articles suivants pour plus de détails.
#! / Bin / sh n'est pas qu'un commentaire! Case! (Qiita)
Faisons le.
Démarrez le serveur dans le terminal comme précédemment.
Ajoutez maintenant l'option --cgi
pour exécuter CGI.
python3 -m http.server 8080 --cgi
Après avoir confirmé le démarrage sur http: // localhost: 8080 /, appuyez sur Envoyer cette fois pour confirmer. S'il peut être affiché, il réussit.
Si vous ne le voyez pas lorsque vous appuyez sur le bouton de soumission, vérifiez d'abord le terminal pour voir quel type d'erreur se produit.
code 403, message CGI script is not executable
→ Entrez chmod 755 CGI script name.py
dans le terminal du répertoire cgi-bin.
SyntaxError: Non-ASCII character '\xe5'
→ Ajoutez # coding: utf-8
en haut du fichier.
Créez un serveur Web confortable avec python et testez CGI. (Qiita)
Recommended Posts