PythonベースのWeb開発フレームワーク:Django

2010年2月14日

DjangoはPythonベースのMVCモデルのWeb開発フレームワークです。
Django本家によると、 Djangoの特徴としては、以下が挙げられるようです。
  • Object-relationalマッピング
    クラスとクラスメンバだけでテーブルを定義する方式。
    これにより、複雑なSQLを覚えなくても済むようになります。 Phactory的にはようやくSQL覚えてきたので最初SQLを捨てることに抵抗があったのですが、 振り返ると、このO/Rマッピングのほうがシンプルで良いと思います。 また、SQLをネイティブで叩くことも可能ですので、SQL狂のひとも一安心です。
  • 管理者用インターフェース
    Webアプリを開発開始すると同時に、ブラウザ経由でDBの内容を確認・修正できたり コンテンツ管理ができる管理者限定の機能を利用できるようになります。
  • URLマッピング
    Djangoはファイル単位でHTMLページを管理するわけではないので、柔軟にURLを管理することができます。 基本的なマッピング単位としては、URIとそれに応答するハンドラ(関数)で、 プロジェクトごとにトップURIを設定しておけば、そこから下位のURLをいつでも変更することが出来ます。 これは非常に強力な仕組みで、GETのパラメタをディレクトリ風にすることや404エラーを一時的に返すように 即座に変更することが可能です。
  • テンプレートシステム
    WebのU/Iは、よく段組をしたりヘッダフッタがあるものです。 これらは、同一サイト内だったらどれも同じデザインです。 通常は、このようなデザインの重複もページをひとつ作るたびに 用意しないといけないのものですが、これを解決するのがテンプレートシステムです。 基本的なテンプレートを定義すれば、あとは変更のある部分だけを定義する 部分的なHTMLファイルを用意して実装すればよく、 HTMLのU/Iデザインをパーツ的に扱うことができるようになりますので、 開発が簡単になります。
  • キャッシュシステム
    memcacheを用いたメモリベースの高速なキャッシュや、ファイル・DBのテーブルを用いた キャッシュシステムが用意されています。キャッシュの対象も柔軟に対応可能で、 ページ全体やオブジェクト単位でキャッシュする・しないを決定することが出来ます。 当然、キャッシュの有効期間も柔軟に設定可能です。 Djangoは元々mod_pythonを使用しているので高速なのですが、このキャッシュ機能を使うと さらに高速なレスポンスが得られるようになります。
  • 国際化に対応
    日本人だったらよく気になる国際化ですが、 Djangoは文字コードをユニコードとして扱っているのでどんな言語でも対応することができます。
上記特徴とは別に、様々なメリットがあります。
Web開発中にテーブルの定義を変更することはよくあります。 MySQLやPostgresqlに関しては、カラムの追加・リネームくらいはできますが 型の変更やカラムの削除といったことはできません。 ですから、途中でDBの設計変更が生じると非常に大変です。
でもDjangoだと、いつでもテーブル定義を変更(追加・変更・削除)することができます。

また、プロジェクト単位で上記テーブル定義やURL定義等のあらゆる設定を行うので、 移植性が非常に高いのです。つまり、最初のスクラッチ開発は自分のマシンで行って その後別サーバに移行するときは、プロジェクトごと移行してあげればOKです。
あと、簡易Webサーバも付いているので、手軽にデザインを確認しながら手元のマシンで 開発を進めることが出来ます。 PhactoryはMacで開発しているのですが、非常に便利ですよ。
Macに関してDjangoをインストールに関しては以前の記事で解説していますのでご参照ください。
PythonベースのWeb開発フレームワーク:Django