pyramidのいろいろな機能を使ったsimpleなアプリ

色々な機能を使ったシンプルなアプリの例

内容

リクエストと同時にくじを引きその結果でページを遷移
(くじをフォームのバリデーションととらえても)
(もしくは、何かrequest時の状態、サーバの状態、権限による分岐など)

使っている機能

  • view_config(add_view)のcontext引数
  • contextに渡す例外を自分で定義
  • resource factory
  • 複数のview_config
  • custom_predicates
  • rendererを自分で定義

(あとで詳しく)

実行結果

(gistの内容を変更した。これはgistで一つ前のコミットの時の実行結果)

$ wget localhost:6543/register -q -O - 
fail 0.0403390155663
$ wget localhost:6543/register -q -O - 
success 0.553231375114
$ wget localhost:6543/register -q -O - 
fail 0.114420215993
$ wget localhost:6543/register -q -O - 
success 0.896110223393
$ wget localhost:6543/register -q -O - 
success 0.587029556341
$ wget localhost:6543/register -q -O - 
fail 0.390734917634
$ wget localhost:6543/register -q -O - 
success 0.706551569701
$ wget localhost:6543/register -q -O - 
success 0.60645679603
$ wget localhost:6543/register -q -O - 
success 0.832991161114
$ wget localhost:6543/register -q -O - 
success 0.933130897955
$ wget localhost:6543/register -q -O - 
success 0.902503274727
$ wget localhost:6543/register -q -O - 
fail 0.291119759395

追記

出力内容も変えてみた。
URLの末尾で出力の形式が変わる

# json
$ wget localhost:6543/confirm/json -q -O -
{"status": "success", "n": 0.6269372619335825}

# report(xml)
$ wget localhost:6543/confirm/report -q -O -
        <xml>
          <status>fail</status>
          <result>0.317302</result>
        </xml>

実行結果

$ wget localhost:6543/register -q -O - 
        <xml>
          <status>fail</status>
          <result>0.202816</result>
        </xml>
$ wget localhost:6543/register -q -O - 
{"status": "success", "n": 0.5142000134395782}
$ wget localhost:6543/register -q -O - 
{"status": "fail", "n": 0.27676892794598806}
$ wget localhost:6543/register -q -O - 
        <xml>
          <status>success</status>
          <result>0.957400</result>
        </xml>
$ wget localhost:6543/register -q -O - 
        <xml>
          <status>success</status>
          <result>0.833650</result>
        </xml>