Hatena::Diary

sugarbabe335 RSSフィード

2010-02-08

symfonyとdjango、ちょっとだけ

01:06 | symfonyとdjango、ちょっとだけ - sugarbabe335 を含むブックマーク はてなブックマーク - symfonyとdjango、ちょっとだけ - sugarbabe335

動かすサーバが単純になかったのでgoogle app engineを使いたかったのとdjangoにちょっと興味があったので、動かそうとしたけど

  • google-app-engine-djangoが挙動不審
    • runserverするとdjango moduleを読み込めるときと読み込めない時がある
    • dumpdataが出来るときと出来無いときがある
  • もうなんかよくわからない

という問題があって今のところストップしてる。ただせっかくなので、いつも使ってるsymfonyとちょっとだけ比較してみます。

mvcモデル

symfonymvc(model, view controller)

djangoはmvt(model, view, template)

djangoでいうviewがmvcモデルでいうcontroller、templateがviewに近いらしい。なんでこうなってるのかまでは調べてない。僕の中では=になってる

ルーティング

djangoは全部正規表現。名前付き正規表現びびる。あとpyファイル。

(r^hoge/(?P<fuga>.*)/$', hgoe)

でview(controller)にfugaという名前で変数を渡せる。そもそもpythonは以下のようにメソッドの引数に名前をつけて渡せる

def hoge(fuga, yap):
  return fuga + yap 

print hoge(yap="foo", fuga="bar") #=> barfoo

なのでview(controller)に変数を渡すのが楽?というわけではないけど便利

symfonyの場合は色々yamlに書く。collectionとか便利。object自体を設定して $this->getRoute()->getObject()とかも出来る。

コントローラー

djangoの場合色々importしないといけない。symfonyは全部autoloadしてる。どっちがいいとは言えないけど。djangoショートカットがやたら充実してる。

ビュー

djangoテンプレート継承出来る。便利。symfonyは出来無い。悲しい。2.0から出来るんだっけ?

モデル

0から作るときにdoctrineとかpropelみたいにスキーマyamlとかに書いてそこから作るのではなくて、djangoの場合はmodelのファイルに書いてそこから生成する。

propelにはマイグレーションの生成機能がない。doctrineとかdjangoのにはある。

フォーム

symfonyの場合はbuild --form みたいなのをしてschemaから自動生成する。djangoの場合は自分でクラスを書く。といっても継承するだけなので別に簡単。

個人的にはsymfonyの場合baseとなるformはabstractというのが気に入らないので、それならいっそのこそdjangoのような方が好き。

管理画面

両方共便利。django0.96だかの場合モデルにadminの設定を書いてたのでそれはどうなのかーとか思ってたけど、新しい方だとそんなことはないみたい。

ちなみにかっこよさはdjangoが圧勝

ドキュメント

symfonyの圧勝。

残り

ルーティングの所で既にめんどくさくなった。pythonの方がかっこいいけど、慣れてないのでめんどくさい。

トラックバック - http://d.hatena.ne.jp/sugarbabe335/20100208/1265558811