(上手くできなかったページ): 次回以降にリベンジ。
Python 3 のデフォルトでついてくる機能を使ってPC上でWeb Serverの環境を立ち上げ、簡単なプログラムを実行しててみました。
内容:現在時刻を表示させるスクリプトになります。
#!/usr/bin/env python3
import datetime
#フォーマット文字列の作成
html_body = """
<html><body>
{0.year:d}/{0.month:d}/{0.day:d} {0.hour:d}:{0.minute:d}:{0.second:d}
</body></html>"""
now=datetime.datetime.now()
print("Content-type: text/html\n")
print(html_body.format(now))
import datetime
#フォーマット文字列の作成
html_body = """
<html><body>
{0.year:d}/{0.month:d}/{0.day:d} {0.hour:d}:{0.minute:d}:{0.second:d}
</body></html>"""
now=datetime.datetime.now()
print("Content-type: text/html\n")
print(html_body.format(now))
このプログラムでは単純にスクリプトを実行し、結果をhtmlとしてブラウザに表示するというものでした。
今回は、ユーザとのデーターの受け渡しのあるプログラムを実行してみたいと思います。
前提
Pythonには、URL上にクエリとして渡された値を受け取るためのモジュールが用意されています。それがcgiモジュールです。このモジュールを使うと、クライアントから渡されたリクエストを分割して、Pythonで扱いやすい形に変換できます。
プログラムの実行
前回のスクリプトになります。
#!/usr/bin/env python3
import datetime
#フォーマット文字列の作成
html_body = """
<html><body>
{0.year:d}/{0.month:d}/{0.day:d} {0.hour:d}:{0.minute:d}:{0.second:d}
</body></html>"""
now=datetime.datetime.now()
print("Content-type: text/html\n")
print(html_body.format(now))
import datetime
#フォーマット文字列の作成
html_body = """
<html><body>
{0.year:d}/{0.month:d}/{0.day:d} {0.hour:d}:{0.minute:d}:{0.second:d}
</body></html>"""
now=datetime.datetime.now()
print("Content-type: text/html\n")
print(html_body.format(now))
今回のスクリプトになります。
ファイル名:querytest.py
#!/usr/bin/env python
html_body = """
<html><body>
foo = %s
</body></html>"""
import cgi
form=cgi.FieldStorage() # (1)
print "Content-type: text/html¥n"
print html_body % foo # (2)
html_body = """
<html><body>
foo = %s
</body></html>"""
import cgi
form=cgi.FieldStorage() # (1)
print "Content-type: text/html¥n"
print html_body % foo # (2)
挙動の確認。
http://127.0.0.1:8000/cgi-bin/querytest.py?foo=bar
更に複雑なスクリプト
ファイル名: find13f.py
#!/usr/bin/env python
html_body = """
<html><body>
foo = %s
</body></html>"""
import cgi
form=cgi.FieldStorage() # (1)
print "Content-type: text/html¥n"
print html_body % foo # (2)
html_body = """
<html><body>
foo = %s
</body></html>"""
import cgi
form=cgi.FieldStorage() # (1)
print "Content-type: text/html¥n"
print html_body % foo # (2)
挙動の確認。
http://127.0.0.1:8000/cgi-bin/find13f.py?year=3000
この2つとも上手くできなかった。
いつの日か戻ってきてリベンジしたい。
参考)
このページは、以下のサイトを参考にしています。
とても分かり易いサイトです。 ここに記載されていない細かな内容の解説もされています。
https://coreblog.org/ats/stuff/minpy_web/04/index.html
残念ながら、今回は記載されていることがうまくできませんでした。
0 件のコメント:
コメントを投稿