久し振りにDjangoを触ってみたらやっぱり便利そうだった件

某緑のところの承認欲求ゲームには関わりたくないので、こういう感想めいたものは誰も見てないはてなブログの方に書きます。


一応周りにはPythonの人として認知されてるのに、最近Pythonに関わることを何もしてないことに危機感を抱き、Djangoチュートリアルを久し振りにやってみました。

https://docs.djangoproject.com/en/1.7/intro/tutorial01/

学生の頃バイトでちょっとしたWebアプリを作った以来で、確か2011年ぐらいのことなので当時はまだバージョン1.2か1.3だったと思います。

それが今では1.7までバージョン進んだということで、いろいろ進化してますね。

相変わらずadminページが素晴らしい

「ユーザーに何も価値を産まない管理ページにコストかけるのもったいないから、フレームワークの機能で用意してるよ」って精神が素晴らしすぎる。

もちろん管理ページから操作できるモデル、フィールドは指定できるし、表示形式なんかもほとんどコードを書かずに変更できるのは、実運用を考えると大きなメリット。

Migrationができた

以前はsyncdbコマンドでモデルとDBを同期してたけど、Rails式のMigrationが1.7からついに導入された模様。

「すべてをコードで管理する」のは今の時代に欠かせないですよね。

チュートリアルにテストの章がある

これ重要。上で挙げたチュートリアルページにわざわざ1章設けてテストの項目がある。

しかも前半がテストの書き方とかじゃなくて「何でテストの項目があるんだよいらねーよとか思ってるだろけど、まともな規模の開発しようと思ってたら必須だろ」みたいな説明が延々となされてる辺りがPythonista的で実にいい。

それどころか「テスト書かれてないアプリに対して徐々にテスト書いてくにはどうすればいいか」とかにまで言及されてて、もはやWebアプリケーションフレームワークチュートリアルではないw

便利機能が増えてる

チュートリアルで目に付いたのはget_object_or_404。その名の通り指定した条件のオブジェクトが見つかればそのオブジェクトを返して、見つからなければ404エラーを吐いてくれる。

これって実はtry - exceptをいちいち書かなくていいだけじゃなくて、詳細ページを作るときに「URLからid取ってobjectをgetしてtemplateに渡す」だけでよくなる。

「んなわけないだろ。いろいろデータ操作してからtemplateに渡す必要あるだろ」というのは間違いで、そんなややこしい操作はモデルのメソッドとして実装すべきという規則をある意味強制してくれるのがすごくいい。

最後に

うーん、やっぱりお仕事で使ってるCakeちゃんが相当ダメな子な気がしてきた。

いや別に管理ページないのは普通だしMigrationやテストもある(デフォルトで入ってなくてライブラリ入れる必要あるのはご愛嬌)けど、やっぱりモデルが糞すぎる。モデルでfindするとオブジェクトじゃなくて配列で返ってくるとか、こんなの絶対おかしいよ。