Django
2007.01.28 Sunday 23:30
昨晩偶然知ったPythonのMVC Frameworkであるdjangoに挑戦.一年ぶりのMVC Framework.今日のところはチュートリアルを試しただけだが,かなり完成度が高い感じがする.
Symfonyの時は悪戦苦闘したのだが,今回はひじょうにすんなり.(1年前のものと比較するのはフェアではないが...)
Symfonyの時は悪戦苦闘したのだが,今回はひじょうにすんなり.(1年前のものと比較するのはフェアではないが...)
何故急にdjangoなのかというと,昨晩JSONか何かについて検索していたときにたまたまMVC Frameworkの性能比較みたいなページがあり,そこで出てきたのがRoR,Symfony,そしてdjangoだったのだ.
基本的な部分はRuby on RailsやSymfonyと変わらない.URLの正規表現マッチによる振り分け(Routing),ModelとViewの分離とテンプレートシステム,Databaseのwrapping等々.しかし,明らかにSymfonyよりコーディングが少なくて済んだ感じがする.
最初に本家のパッケージとActivePythonのどちらが良いのかで早速迷う.ActivePythoはWindowsのCOMインターフェースに特徴があるようだが,どうも本家の方が一般的らしい.本体の違いはバイナリパッケージの互換性に関連するのでちょっと神経質に.そして,windows用インストーラでdjangoをインストール.Symfony(当時)のときはPHP PEARのバグとSymfonyの簡易サーバでかなりはまったのだが,インストール自体はPEARをつかうSymfonyの方がより簡単かと思う.
まず,startprojectでサイトの枠組みを構築.プロジェクト名のディレクトリの下に出来たファイルはたったの4つ.うち1つは__init__.pyだから実質3つ.ホームページによれば途中でファイル構成の見直しが行われてサブディレクトリが取っ払われたらしいので,今頃初めて正解だったかもしれない.
さらにアプリケーションを作成するもこれまた,model.pyとview.pyの2つだけ.model.pyの方にデータの形を記述してsyncdbを行うとデータベースにテーブルが作られる.
あとは,view.pyに画面表示用の受け皿関数を,別のディレクトリにテンプレートを作成してできあがり.
それとは別にデータを編集するためのadmin画面も用意されている.これもかなり完成度が高い感じ.日付型の部分にはPopupのDate Pickerが付くし.
djangoでは"scaffold(足場)"という概念が出てこない.SymfonyではCRUDやadmin画面を"自動生成"させる必要があったが,基本的には数行の設定だけでモデルに合わせた画面が動的に生成される.
もっとも,Ruby On Railsでは生成はオプションだから生成機能がないdjangoの方が機能が少ないとも言えるが,テンプレートとjava scriptは自分で書けという方針らしい.
明日以降,題材を見つけてもう少し深く掘り下げてみようと思う.
基本的な部分はRuby on RailsやSymfonyと変わらない.URLの正規表現マッチによる振り分け(Routing),ModelとViewの分離とテンプレートシステム,Databaseのwrapping等々.しかし,明らかにSymfonyよりコーディングが少なくて済んだ感じがする.
最初に本家のパッケージとActivePythonのどちらが良いのかで早速迷う.ActivePythoはWindowsのCOMインターフェースに特徴があるようだが,どうも本家の方が一般的らしい.本体の違いはバイナリパッケージの互換性に関連するのでちょっと神経質に.そして,windows用インストーラでdjangoをインストール.Symfony(当時)のときはPHP PEARのバグとSymfonyの簡易サーバでかなりはまったのだが,インストール自体はPEARをつかうSymfonyの方がより簡単かと思う.
まず,startprojectでサイトの枠組みを構築.プロジェクト名のディレクトリの下に出来たファイルはたったの4つ.うち1つは__init__.pyだから実質3つ.ホームページによれば途中でファイル構成の見直しが行われてサブディレクトリが取っ払われたらしいので,今頃初めて正解だったかもしれない.
さらにアプリケーションを作成するもこれまた,model.pyとview.pyの2つだけ.model.pyの方にデータの形を記述してsyncdbを行うとデータベースにテーブルが作られる.
あとは,view.pyに画面表示用の受け皿関数を,別のディレクトリにテンプレートを作成してできあがり.
それとは別にデータを編集するためのadmin画面も用意されている.これもかなり完成度が高い感じ.日付型の部分にはPopupのDate Pickerが付くし.
djangoでは"scaffold(足場)"という概念が出てこない.SymfonyではCRUDやadmin画面を"自動生成"させる必要があったが,基本的には数行の設定だけでモデルに合わせた画面が動的に生成される.
もっとも,Ruby On Railsでは生成はオプションだから生成機能がないdjangoの方が機能が少ないとも言えるが,テンプレートとjava scriptは自分で書けという方針らしい.
明日以降,題材を見つけてもう少し深く掘り下げてみようと思う.
Comments