メモ

Werkzeugを使ったことがないままKayを使っているので、何かが起きたときにKayで起きる現象なのかWerkzeugで起きる現象なのかが区別付かない。まあメモしておく。

  • GETでリクエストしているのにrequest.formにアクセスしたりするとHTTPステータスとしてBad Requestを返す
  • ビューがreturnし忘れでNoneを返した時のエラーメッセージは「TypeError: 'NoneType' object is not callable」
  • Jinja2のformatフィルタはDjangoと違って"%.2f"|format(x)という構文。x|aFilter|format:"%.2f"に相当することは"%.2f"|format(x|aFilter)になる。
  • kayのテンプレートにうっかり値を渡し忘れて、存在しない名前anObjに対してanObj|aFilterするとaFilterにはのオブジェクトが渡され、こいつはanObj.anyAttrがu""であるようなオブジェクトのため、モデルの定義でdb.IntegerProperty()だから当然整数だと思って(anObj.count * 100) / anObj.totalなんかやるとTypeError: unsupported operand type(s) for /: 'unicode' and 'unicode'と怒られる。よりによってエラーログの表示は
  File "/Users/nishio/cur/bitbucket/iqtest/hirameita/main/templates/index.html", line 1, in top-level template code
    {% extends "main/_base.html" %}

TypeError: unsupported operand type(s) for /: 'unicode' and 'unicode'

だったのでとてもビビる。まあ、いくらなんでもそこが割り算ってことはないな、と思い直して割り算しているフィルタを見たらわかった。assert isinstance(anObj, models...)ってやるべきかなぁ