Python3.3 WSGI Webページの表示 | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

Python勉強中のパク太郎です。


今回はPythonを用いてWebページの表示を行いたいと思います。

Pythonを用いてWebページの表示を行うためには、WSGIというインタフェース定義に従います。


WSGIに準拠したアプリケーションは下記のようになります。


from wsgiref import simple_server, util

_html = '''<html>
<head><title>LogonForm</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
</head>
<body>
<form action="{0}" method="POST" AcceptEncoding="utf-8">
<dl>
<dt>UserID</dt>
<dd><input type="text" name="UserID"/></dd>
<dt>Password</dt>
<dd><input type="text" name="Password"/></dd>
<input type="submit" name="logon" value="LogOn" />
</form>
</body>
</html>
'''

class SimpleWeb(object):
    '''簡単なWebアプリケーション'''

    def __call__(self, environ, start_response):
        ''' WSGI アプリケーション '''
        start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])

        return self.logonPage(environ)

    def logonPage(self, environ):
        '''Logonページの内容を作成'''
        
        return [bytes(_html.format(util.request_uri(environ)), 'utf-8')]

application = SimpleWeb()

if __name__ == '__main__':

    server = simple_server.make_server('', 8080, application)

    server.serve_forever()

上記コードのSimpleWebクラスがWSGIに準拠したアプリケーションです。
引数で渡された、呼び出し可能オブジェクト(start_response)に対して、
ステータスコードとレスポンスヘッダを返して、
本文を生成するための、バイト配列を返り値として返しています。

SimpleWebを標準モジュールwsgirefを用いて表示しているのが、
38行目と40行目の部分です。

では、実際に動かしてみます。
上記コードをsimpleweb.pyという名前で保存し、保存したディレクトリ上で、
下記コマンドを実行します。


>python simpleweb.py


これでWebアプリケーションが起動しますので、http://localhost:8080にアクセスします。
Webページが表示されていれば成功です。

FormがあるWebページにしましたが、
現段階ではボタンを押下しても同じページを表示するだけで
何もしないWebページになっています。
(次回の記事で画面遷移するように機能追加する予定です)

終了する際は、シェル上でCTRL+Cを押下すればWebアプリケーションは終了します。

これで、WSGI準拠のアプリケーションを起動することが出来ました。