niiyan's blog

niiyanの個人ブログ。

Google App Engine SDK: 検索フォームを作ってみる

少し戻って Handling Forms With webapp - Google App Engine - Google Code を読みながら、簡単な検索フォームを作ってみる。

基本的には、ほぼ Handling Forms With webapp - Google App Engine - Google Code のまま。ただし、すでにテンプレートの使用を勉強済みだったので、検索結果の表示には別にテンプレートを用意した。

1. result.html の作成

検索結果表示用のテンプレートを作成。result.html とする。

2. cgi モジュールのインポート

import cgi

文字列のエスケープに使用。

3. 検索用のクラスを作成

class Search(webapp.RequestHandler):
    def post(self):
        # クエリを取得してエスケープ
        query = cgi.escape(self.request.get('q'))
        # テンプレートに渡す値を更新
        template_values.update({
            'query': query
        })
        # パスの結合
        path = os.path.join(os.path.dirname(__file__), 'result.html')
        # テンプレートを元に画面に書き出す
        self.response.out.write(template.render(path, template_values))

4. Search ハンドラの URL マッピングを追加

webapp.WSGIApplication に Search ハンドラの URL マッピングを追加:

def main():
    application = webapp.WSGIApplication(
                                        [('/', MainPage),
                                        ('/search', Search)],
                                        debug=True)
    wsgiref.handlers.CGIHandler().run(application)

5. 実行

とりあえず、検索フォームに入力した文字列を取り出して表示するところまで。