TurbogearsからDjangoに乗り換えてみて
去年から、プロトタイプ実装に使っていたpythonのweb application frameworkを
最近、TurboGearsからDjangoに乗り換えました。
それで、両者の違いとか、感想などを書いてみようかと思い立ったわけです。
Turbogearsを使い始めたのは,去年の一月くらい。TurboGearsの勉強会があって、いきなり全くの素人なのに参加して、柴田さんに教えてもらったturbogears製のソーシャルブックマークアプリを簡易ハックしてプレゼンなんかして、turbogearsデビューとなりました。
もう、その時には,Djangoはあって、まだ、google app engineはなかったころですね。
で、5月くらいから、会社のプロトタイプ実装に使い始めて、結構いろいろ、コードを書きました。sqlobjectで苦労したり、resourceのパスで苦労したり、いろいろ。
そもそも、djangoじゃなくて、turbogearsを使い始めた理由はいくつかあるのですが、大きくは
- 定評のあるpythonライブラリによるメタフレームワーク
- template言語がxmlベースのkid
- sqlobjectがよさそうだった。
でした。
今思い返してみると、すべて裏目に出たよう感じがしてます。メタフレームワークなので、情報がばらばらで、バージョンの変化とかが面倒だし、文書が整備されないとか、
また、xmlベースのテンプレート言語のkidを嫌いじゃなかったけど、私の書き方の問題かもしれないが、記述が煩雑、表示速度が遅い。デバグがやりにくい。ってところ。
あと、けっこう、sqlobjectには手こずったかもしれない。バージョンが
0.7から、いまは、0.10くらいなってるか、で、リレーションの扱いがいまいちわかりにくく、使いにくかったように今になって思う。
ResultSet を取ってきて、for ループでまわしていて、リレーションのの不整合で、
exceptionはいたら、for 全体でしか、ハンドリングしてくれなかったりとか、これは、こっちの問題かもしないが、情報ほとんどないし、やっぱり使いにくかったかな。
Djangoのほうは、統一された、フルスタックのフレームワーク、シンプルなテキストベースのtemplate言語、シンプルなORMで、Turbogearsとは逆の方向かもしれない。本格的に乗り換えて、ここ一ヶ月くらいだが、上記の3つはどれも、いまのところ、使いやすく、おおむね気に入っている。
詳細はまた、違うエントリーに書くかもしれないが、目立った、気づいた両者の違いを列挙してみたい。
- djangoのurls.pyのurlconf ?は、turbogearsにはなく、使いやすい。
- djangoには、paginationが標準装備
- turbogearsでは、http request, http responceが隠蔽されていたが、djangoは明示的に使われている。最初これがだめで、tgの方がかっこいいとおもったけど、implicitよりexplicitのほうがいいね
- djangoのORMはシンプル、リレーションがかなりわかりやすく、つかいやすい。
- djangoのORMをmysqlで使うとき、charfieldはデファルトで、大文字小文字を区別しないっぽい
- djagnoのmod_pythonによる、デプロイは結構簡単だった
- django 0.96と1.0の違いが、少々あってその違いは、情報探す時ちょっといや
- djangoのテンプレートは、シンプルにかける
- が、ちょっとpythonの処理をさせたい時は、kidのほうが簡単かな、djangoの場合、filterを書かなくちゃいけないし,そもそも、pythonの式、文をかけない
- キャッシュがdjangoには、標準装備。tgには、ない。data, objectnのキャッシュはmemcachedとかでできるけど、ページキャッシュがexpose()でどうやんのかわからんかった。
- 最近発売された、django本はいい。国内のtgの本も悪くないけど、著者が忙しいためか、情報、内容がすくない。
- 英語のtg本ももってるけど、わかりやすい。。ほうではないような。というか、メタフレームワークなので、必要とする情報が多すぎる。sqlobjectもcherrtypyも、kidも、、、で、一冊におさまりきれてないような。
- formも使いこなせてないけど、djangoのほうが、tgよりわかりやすい。というか、tgのform, widgetはわかりにくく、情報がない。
まあ、何事も偏見なく、冷静に、自分で使って、判断しましょうってことかな。
| 固定リンク

コメント