pythonのcgi moduleのめも
社内でpython製のものをデモするために簡単なcgiを作ろうとしたら、意外と引っかかったのでメモ。
cgi.FieldStorage() → 辞書型
postやgetを受けるcgi.FieldStorage()は、辞書型のようで辞書型でなく、バグの温床になりそうなので変換して使う。
import cgi form = cgi.FieldStorage() form_dict={} for key in form.keys(): form_dict[key] = form.getvalue(key)
cgi.FieldStorage() のエンコード指定
cgi.FieldStorage(encording='utf-8')
webは何があるか分からないのでencodeを指定する
<input type=“checkbox”>の判定
チェックが入るとcgi.FieldStorage()["key"].value
にstring型で'on'
と入る。チェックがないときはcgi.FieldStorage()
にキー自体が無い。
ただ、仮に'off'
とかが入ってくると怖いので、strの'on'
に等しいかで判定する。
tmpフォルダ
matlabplot.pyplot
などで一時ファイルを使うとき、cgi-bin
直下にtmp
フォルダを作ると権限の関係でうまく動かない。tmp
フォルダはcgi-bin
と同階層に置くこと。
後、一時ファイルを作成した後は、使う前にos.chmod
等で権限を付与することも忘れない。