Top / Programming / Python / Python CGIプログラミング入門 / 押されたボタンを取得する

押されたボタンを取得する

HTMLフォームの押されたボタンを取得し表示します。

test06.cgi

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
どのボタンが押されたか取得する
'''
html = '''Content-Type: text/html

<html>
<head>
  <title>どのボタンが押されたか取得する</title>
</head>
<body>
<h1>どのボタンが押されたか調べる</h1>
<p>押されたボタンは、「%s」です。</p>
<form action="test06.cgi" method="post">
  <input type="submit" name="btn1" value="[1]" />
  <input type="submit" name="btn2" value="[2]" />
  <input type="submit" name="btn3" value="[3]" />
</form>
</body>
</html>
'''

import cgi
f = cgi.FieldStorage()
if f.getfirst('btn1'):
    btn = '1'
elif f.getfirst('btn2'):
    btn = '2'
elif f.getfirst('btn3'):
    btn = '3'
else:
    btn = ''
print html % btn

解説

import cgi
f = cgi.FieldStorage()

HTMLフォームから送信された値は、cgi モジュールの FieldStorage クラスを使用して取得します。

押されるボタンは1つなので、FieldStorageクラスの getfirst() を使用します。

if f.getfirst('btn1'):
    btn = '1'

ボタンが押されていれば、ボタンの name 属性に対して value 属性の値が設定されます。

ボタンの name 属性に値が設定されているか調べます。

btn1 のボタンが押されていれば、if f.getfirst('btn1') は True になるので、変数 btn に 1 を代入します。

btn1 のボタンが押されていなければ btn2 のボタンが押されたか調べます。

btn2 のボタンも押されていなければ btn3 のボタンを調べます。

print html % btn

変数 btn には押されたボタンの名前が設定されています。 ボタンが押されていないときは '' になります。

文字列フォーマットの %s を 変数 btn と置き換えて出力します。

関連URL

更新履歴