Karesansuiフレームワークの提供する関数/変数リファレンス - コントローラー(gadget)¶
※MVC別に分類します。
このページではMVCのController部分のリファレンスを紹介します。

gadget(Controller)¶
gadgetは各ファイルが一つのリソース(URL:RESTful)になります。
作成手順は 新しいページを作ってみる を参照してください。
利用可能なメソッド, 変数¶
gadgetクラスにはHTTP Methodに合わせて _GET, _POST, _PUT, _DELETE がありますがその中で利用可能なメソッド, 変数に以下のようなものがあります。
- param : gadgetファイル内に定義した、urls変数で指定したURLの正規表現部分が設定されています。
- params : GET, POSTパラメタが設定されています。
- self.DELETE : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
- self.GET : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
- self.POST : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
- self.PUT : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
- self._ : _("hoge")と利用するだけで、国際化(gettext)が利用できます。詳しくは 国際化してみるを参照ください。
- self.__method__ : リクエストされたHTTP Methodが設定されています。example) "GET"
- self.__module__ : gedgetクラスのモジュールパスが設定されています。example) "karesansui.gadget.hoge"
- self.__template__ : メディアタイプ、テンプレートのファイル名(MVCのview名※拡張子は除く)、テンプレートのディレクトリ名がdict(辞書)で設定されています。
example) <Storage {'media': 'html', 'file': 'host', 'dir': 'host'}>
- self.chk_guestby1 : URLに含まれるパスを利用してゲストOSが存在しているかチェックする。引数にはparamを利用します。
- self.chk_hostby1 : URLに含まれるパスを利用してホストOSが存在しているかチェックする。引数にはparamを利用します。
- self.download : クライアントへファイルをダウンロードする際に利用します。 ※1
- self.input : クライアントからのGET、POSTパラメタが辞書(dict)で設定されています。
- self.is_html : リクエストURLの拡張子が、.htmlか
テンプレートファイルの拡張子(.html)が選ばれます。
- self.is_json : リクエストURLの拡張子が、.jsonか
テンプレートファイルの拡張子(.json)が選ばれます。
- self.is_mode_input : リクエストパラメータに、mode=inputがある場合にTrueが設定されます。
テンプレートファイルの拡張子(.input)が選ばれます。
- self.is_part : リクエストURLの拡張子が、.partか
テンプレートファイルの拡張子(.part)が選ばれます。
- self.is_standalone : リクエストパラメータに、standalone=1がある場合にTrueが設定されます。
.partのようなHTMLの一部を出力する場合のテストに使用します。.partファイルの前後にHTMLタグを自動で付加します。
- self.is_xml : リクエストURLの拡張子が、.xmlか
テンプレートファイルの拡張子(.xml)が選ばれます。
- self.languages : ログインしているユーザの言語(現在はenとjaがサポートされています)のリストが設定されています。
- self.logger : ログ出力オブジェクトです。
example)
self.logger.debug("hoge") # /var/log/karesansui/application.logに出力されます。
- self.logger_trace : プログラムエラーログ出力オブジェクトです。
example)
self.logger.debug("hoge") # /var/log/karesansui/error.logに出力されます。
- self.me : ログインしているユーザのUser情報が設定されています。
- self.orm : Karesansuiデータベースへのセッションが設定されています。これを利用しデータベースアクセスを行います。
- self.pysilhouette : pysilhouette(ジョブマネージャー)データベースへのセッションが設定されています。これを利用しデータベースアクセスを行います。
- self.view : テンプレートへデータを渡したい際に利用します。
example)
self.view.hoge = "hogehoge" # テンプレートでは ${hoge} を記述するだけで hogehoge が取得できます。
※1
ダウンロードを行う方法は3種類あります。
- 通常使用されるHTMLやXML、JSONをクライアントに返却します。一般的なWebアプリケーションで利用される形式です。
- すでに存在するファイルを出力します。※一般的なファイルダウンロード時に利用します。
example)
self.download.file = "ファイルパス"
self.download.type = OUTPUT_TYPE_FILE (lib.restをインポートします)
* IOストリームを利用して出力します。※クライアントがタイムアウトするような巨大なファイルや、処理をしながら出力する際に利用します。
example)
self.download.stream = IOオブジェクト
self.download.type = OUTPUT_TYPE_STREAM
※以下をTrueにすることで出力したあとに元のファイルを削除します。
self.download.once = False
_GET, _POST, _PUT, _DELETEメソッドのreturnについて¶
return True : HTTP Responseコード200で処理されます。
return False : HTTP Responseコード500で処理されます。
その他のHTT Responseコードで処理するには
return web.xxxx()
example) return web.notfound()
h3. 対応しているHTTP Response コード
# 200, 201, 202
"ok", "created", "accepted",
# 301, 302, 303, 304, 407, 408
"redirect", "found", "seeother", "notmodified", "tempredirect", "requesttimeout"
# 400, 401, 403, 404, 405, 406, 409, 410, 412
"badrequest", "unauthorized", "forbidden", "nomethod", "notfound", "notacceptable", "conflict", "gone", "preconditionfailed",
# 500
"internalerror",