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等で権限を付与することも忘れない。