Django (ジャンゴ) について
Djangoは、
Pythonで実装された
Webアプリケーションフレームワークです。MVC(Model-View-Controller)デザインパターンに緩やかに従っており、複雑なデータベース主体の
ウェブサイト構築を効率化することを主な目的としています。再利用性、プラグイン性、迅速な開発、そしてDon't repeat yourself (DRY) の原則を重視している点が特徴です。Djangoでは、データのモデルからファイルに至るまで、
Pythonが一貫して使用されています。
歴史
Djangoは、元々アメリカのニュース系サイトを管理するために開発され、
2005年7月に
BSDライセンスで公開されました。フレームワークの名前は、ジャズギタリストの
ジャンゴ・ラインハルトに由来します。
特徴
Djangoの大きな特徴は、動的に生成され、
データモデルの定義を通じて完全に構成可能なデータベース管理
CRUDインターフェースを提供できる点です。また、
Python 3系統への対応は、バージョン1.5で実験的に開始され、1.6からは本格的にサポートされました。
Python 2系統への対応は、バージョン1.11で終了しています。
採用事例
Djangoは、PBS、
Instagram、Mozilla、Disqus、
Bitbucket、Nextdoorなど、多くの有名なWebサイトで利用されています。
Djangoのコンポーネント
Djangoフレームワークの核となる部分は、以下の要素で構成されています。
O/Rマッパー:
データモデル(
Pythonクラスとして定義)と
関係データベースとの橋渡しを行います。
URLディスパッチャ:
正規表現に基づいてURLを処理します。
ビューシステム:リクエストを処理してレスポンスを返します。
テンプレートシステム:動的なWebページの生成をサポートします。
さらに、以下の機能もフレームワークに含まれています。
軽量Webサーバ:開発やテストに利用できるスタンドアロンの
Webサーバです。
フォーム処理システム:HTMLフォームのデータをデータベースに格納可能な形式に変換、検証します。
キャッシュフレームワーク:複数のキャッシュ方式をサポートします。
ミドルウェア:リクエスト処理の各段階でカスタム処理を挿入可能です。
ディスパッチャ:アプリケーションコンポーネント間のイベント通信を実現します。
国際化機構:Django自身も多言語対応しており、多言語サイトの構築を支援します。
シリアル化機構:モデルインスタンスをXMLや形式で入出力できます。
テンプレート拡張機構:
テンプレートエンジンの機能を拡張できます。
バンドルされるアプリケーション
Djangoの公式配布物には、以下のような多くの便利なアプリケーションが含まれています。
認証機構:拡張可能な認証システムを提供します。
動的管理インターフェース:データベース管理用の動的なインターフェースを提供します。
フィード生成ツール:
RSSやAtomフィードを生成します。
コメントシステム:柔軟なコメント機能を実装できます。
サイトマップ生成ツール:サイトマップを生成します。
CSRF対策:
クロスサイトリクエストフォージェリを防ぐためのツールを提供します。
テンプレートライブラリ:Textileや
Markdownなどの
軽量マークアップ言語を使用可能にします。
サーバ構成
Djangoは、WSGI (Web Server Gateway Interface) および ASGI (Asynchronous Server Gateway Interface) に対応しており、これらのインターフェースをサポートするWebアプリケーションサーバ上で動作します。例えば、Gunicorn、uWSGI、Uvicornなどが利用できます。また、
Nginxや
Apacheといった
Webサーバと組み合わせて使用することも可能です。さらに、FastCGIサーバとして起動し、FastCGIをサポートする
Webサーバのバックエンドとしても機能します。
サポートするデータベース
Djangoは、以下の
関係データベースを公式にサポートしています。
PostgreSQL
MySQL
SQLite
Oracle
また、サードパーティ製のアダプターを利用することで、
Microsoft SQL Server、
IBM DB2、SAP SQL Anywhere、ODBC、Firebirdなどのデータベースにも接続可能です。さらに、
NoSQLデータベースとの連携を可能にする拡張機能も存在します。
The Django Book
『The Django Book』は、Djangoについて解説したフリーの書籍で、
GNU Free Documentation Licenseの下で提供されています。オンラインで閲覧可能です。
脚注
(特になし)
外部リンク
公式ウェブサイト (英語)
The Django Book
DJANGOPROJECT.JP - 日本のユーザーコミュニティ