最近の更新履歴

このドキュメントについて

現在、このドキュメントは翻訳中です。翻訳は「伊藤 哲之輔」が2008/1 に開始しました。リンクのテキストに英語を含むものについては、リンク先はまだ英語版であることを意味しています。

誤訳等の指摘についてはhttp://tetsunosukelab.appspot.com/contact へお寄せください。

2009/3 共同執筆にTakayo Hamasaki氏を迎えました。今後とも充実させていこうと思います。

最新情報

  • 誤訳指摘用メールフォームを作成しました。
  • 日本版用のコンテンツを作成していこうと思います
  • チュートリアルの和訳完了
その後はクラスリファレンスの和訳を予定しています。クラスリファレンスそのものが全てそろっていないのでどうしたものか・・・とは思いますが。

なお、公式ドキュメントにてToDoアプリケーションの記事が開始されたようです。追って和訳します。

controller.BaseController

 

イントロダクション

gaeo.controller.BaseControllerはリクエスト処理に使用されます。つまり、HTTPリクエストを処理したい場合、gaeo.controller.BaseControllerを拡張したコントローラーを作成する必要があります。その後、作成したコントローラに適切なメソッド(action)にリクエストをディスパッチさせます。
例えば、デフォルトルートパス("/") ハンドラはwelcomeコントローラとindexアクションであるので、"/"のリクエストに以下のコントローラを記述します。
 
# application/controller/welcome.py
from gaeo.controller import BaseController
class WelcomeController(BaseController):
def index(self):
self.render(text='hello, world')
 
 
注意 以下の記述は バージョン: 0.2.1 に基づいています。
 

クラスリファレンス 

  • メンバ変数とプロパティ

  • cookies

ブラウザのクッキーを保持するディクショナリです。
'foo' をクッキーに保持する場合、以下のようにするとデータが保持できます。

self.cookies['foo'] = 'blah...'

これは request.cookies のエイリアスです。
    • has_renderd

テンプレートが与えられているか、または render メソッドが呼び出されているかどうかを返す ブール型の値です。
 
    • params

全リクエストパラメータを保持するディクショナリです。例えば、以下のURLをリクエストした場合、 

 welcome コントローラの index アクションで、パラメータは以下のようになります。

self.params == {

'controller': 'welcome',
'action': 'index',
'a': '123',
'b': 'abc'
}

self.params['a'] とすると、 '123' が得られます。
 
    • request 

google.appengine.ext.webapp.RequestHandler.request のエイリアスです。
 
 
    • response 

google.appengine.ext.webapp.RequestHandler.response のエイリアスです。
 
    • session

      GAEOはセッションを実装しています。このディクショナリはセッションデータを保持します。クッキーオブジェクトと殆ど同じですが、セッションデータをきちんと保持するには、put メソッドを呼び出さなければなりません。

self.session['foo'] = 123
self.session.put()
 
    • _controller

params['controller'] のエイリアスです。
 
 
  • _action

params['action'] のエイリアスです。
 
    • _is_moblie

クライアントが携帯電話かどうか(iPodではなくiPhoneかどうか)を返すブール型オブジェクトです。

    • _is_iphone

クライアントが iPod または iPhone かどうかを返すブール型オブジェクトです。
 
    • _is_android

クライアントが Android 端末かどうかを返すブール値です。
 
  • メソッド

    • after_action(self)

post 処理をここに配置してください。このメソッドは基本的に空で、ユーザのコントローラクラスにオーバーライドされます。このメソッドは実際のアクションが呼び出された後、ディスパッチャによって呼び出されます。
 
    • before_action(self)

aftetr_action と同じですが、処理の前に使用されます。
 
    • invalid_action(self)

一度、未知のURLがリクエストされると、ディスパッチャがこのメソッドを呼び出します。

    • redirect(self, url, perm = False)

google.appengine.ext.webapp.RequestHandler.redirect のエイリアスです。
ただし、has_rendered には True がセットされます。
 
    • render(self, *html, **opt)

コントローラのメイン出力メソッドです。このメソッドを呼び出さなかった場合、ディスパッチャは render から初期テンプレートを呼び出します。render メソッドは色々なタイプの出力をサポートしており、(たまに忘れてしまう) Content_Type ヘッダの設定をすることなく出力できます。
 
このメソッドには型指定なしと型指定ありの2つの使用法があります。型指定なしの場合、クライアントに直接HTML文書を表示できます。
例えば、以下のようになります。
 
self.render('<p>hello, world</p>');
'<p>hello, world</p>' という文字列は 'text/html' のコンテンツタイプでクライアントに送信されます。
また、型とオプションを指定できます。
 
  • text
self.render(text='This is a plan text')
テキストは 'text/plan' でクライアントに送られます。
  • html
self.render(html='<h1>Hello</h1>')
 
HTML文字列は 'text/html' でクライアントに送られます。
  • json
result = self.to_json({'a': 123, 'b': 'abc'})
self.render(json=result)
 
'application/json' でJSON文字列を出力します。
  • xml
self.render(xml='<el>An Elemnt</el>')
 
'text/xml' でXML文字列を返します。
  • template
self.render(template='edit')
 
レンダリング用のテンプレートファイルを指定します。アクションが「index」の場合、ディスパッチャはレンダリング用の「index.html」をsがします。このメソッドを使用すると、他のテンプレートファイルが指定できます。
 
  • template_string
self.render(template_string='Hello, {{ nick }}', values = {'nick': 'alice'})
1行でテンプレートと値を出力できます。
 
  • image
imgdata = .... # AppEngine の ImageAPI で処理したもの)
self.render(image=imgdata)
'image/<image_type>' でバイナリイメージを出力します。
 
注意: 全てのコンテンツタイプは「charset=utf-8」に設定されます。

    • to_json(self, obj, **kwds)

これは simplejson のJSONエンコーダへのショートカットです。このメソッドにディクショナリを渡すと、JSON文字列が返ります。
 
obj = {'x': 123, 'b': 'abc'}
self.to_json(obj)   # 戻り値は「 "{'x': 123, 'b': 'abc'} 」