メモ
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...)ってやるべきかなぁ