社内の初心者向け勉強会(3回目)でWEBサーバ側プログラムを紹介したので、ココにも記述。
環境:windows10、python3.7
Pythonでは簡単なWEBサーバのライブラリを提供しています。
コマンドだけでWEBサーバの起動が出来ます。
※WEBサービスの説明は割愛
今回は、開発が容易なCGIを使って実装します。
CGIとは、ブラウザからの要求に対して処理を行う仕組みです。
コマンド発行したpath以下を公開するので公開したい場所で
以下のコマンドを実行してください。
>python -m http.server 8888 --cgi
例えば、
d:\work\py_test\
上記pathで実行した場合は
d:\work\py_test\ にhtmlを置き
d:\work\py_test\cgi-bin\ に呼び出されるpythonファイルを置きます。
業務システムの場合、サーバ側へのデータ保管はデータベース(以下DB)を使用しますが、
今回、DBを準備するのは時間がかかる為、ファイルにデータを保管する方法で実装してみました。
Pythonでは、ファイル操作もDB操作も簡単に実装出来ます。
操作は似たようなもので
開く → 使う → 閉じる
の手順です。
以下のソースファイルを作成します。
↓ d:\work\py_test\ に置く
<html><head><metahttp-equiv="content-type"charset="utf-8"></head><body>ファイル操作のテスト
<br><formaction="http://localhost:8888/cgi-bin/cgi_file_test.py"method="get"><div>名前を入力<inputname="name"id="name"value=""></div><button>実行</button></form></body></html>
↓ d:\work\py_test\cgi-bin\ に置く
importcgiimportos# パラメータの受け取り
form=cgi.FieldStorage()str_name=form["name"].value# ファイルに書き出し(追記モード)
f=open('./data/test.txt','a')f.write(str_name+"\n")f.close()# ファイルから読込
read_str=""withopen('./data/test.txt','r')asf:forrowinf:read_str=read_str+"<br>"+row.strip()# htmlで出力する
print("Content-Type: text/html")print()print("<html><body>")print("これまでに入力された名前は",read_str,"<br>")print("<a href=\"../file_test.html\">戻る</a>")print("</body></html>")
WEBブラウザに以下のURLを入力して表示して動作を確認します。
http://locahost:8888/file_tesl.html
WEBブラウザで表示したら、名前入力して「実行」押下してみよう。
画面遷移したら、「戻る」押下し、
名前をドンドン入力してみよう。
追記されていくのが確認できます。
この様にPythonではcgiが簡単に作れるだけでなくファイル操作も超簡単に出来てしまいます。
実業務のWEBシステムではフレームワークを使うので、この様なcgiを書くことはホボ無いですが簡単にWEBシステムを実現できるので色々試してみてはいかがでしょうか。