PythonでCGIスクリプトを書く方法【初心者向け】
初心者向けにPythonでCGIスクリプトを書く方法について解説しています。CGIを使うとレンタルサーバーなどでWebサイトの一部として動作させることが出来ます。Pythonでも掲示板やWebアプリケーションを作成することが出来るようになります。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PythonでCGIスクリプトを書く方法について解説します。
そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
PythonでCGIスクリプトを書く方法について詳しく説明していくね!
お願いします!
CGI(Common Gateway Interface)とは
CGIとは、ブラウザの要求に応じ、Webサーバがプログラムや計算を実行する仕組みです。
単純なHTMLで作成したWebページは静的です(誰がいつどのようにアクセスしても同じ内容になる)。
一方、ユーザの操作やアクセス方法に応じ、Webページの内容を動的に変化させたい場合には、CGIを用います。
PythonでCGIスクリプトを書く方法
PythonでCGIスクリプトを書くには、cgiモジュールが便利です。
CGIスクリプトの簡単な動作確認には、http.serverモジュールが便利です。
以下のようにcgiモジュールをインポートします。
import cgi
CGIスクリプト先頭に以下を挿入するとデバッグに便利です。
これにより、CGIスクリプト中でエラーが発生した際に、ブラウザ上に詳細なレポートが出力され、デバッグが容易になります。
import cgitb cgitb.enable()
フォームで入力された値を処理するには、FieldStorageクラスを用います。
form = cgi.FieldStorage()
実際に書いてみよう
サンプルコード
index.html
以下内容のindex.htmlファイルを作成します。
テキスト入力フォーム2つ、送信ボタン1つのWebページです。
POSTメソッドで後述のsample.pyのCGIにアクセスします。
<html> <body> <form action="/cgi-bin/sample.py" method="POST"> <input type="text" name="foo"> <input type="text" name="bar"> <input type="submit"> </form> </body> </html> cgi-bin/sample.py
以下内容のsample.pyファイルを作成し、cgi-binディレクトリに配置します。
import cgi import cgitb cgitb.enable() print("Content-Type: text/html") print() form = cgi.FieldStorage() for key in form: value = form[key].value print('<p>%s: %s</p>' % (key, value))
実行結果
以下のコマンドでWebサーバを起動します。
python -m http.server --cgi 8000
Webブラウザで http://localhost:8000 にアクセスし、フォームに入力します。
送信ボタンをクリックすると、以下のようにCGIスクリプトが実行されました。
監修してくれたメンター
橋本紘希
システムインテグレータ企業勤務のシステムエンジニア。 開発実績: Javaプログラムを用いた業務用Webアプリケーションや、基幹システム用バッチアプリケーションなどの設計構築試験。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。