| 原作者 | エイドリアン・ホロバティ、サイモン・ウィリソン | ||
|---|---|---|---|
| 開発者 | Djangoソフトウェア財団[1] | ||
| 初回リリース | 2005年7月21日[2] | ||
| 安定リリース |
| ||
| リポジトリ |
| ||
| 書かれた | パイソン[1] | ||
| サイズ | 8.9MB [4 ] | ||
| タイプ | ウェブフレームワーク[1] | ||
| ライセンス | 3条項BSD [5] | ||
| Webサイト | このサイトについて | ||
Django(/ ˈ dʒ æ ŋ ɡ oʊ / JANG -goh ; djangoと表記されることもある)[6]は、Webサーバー上で動作する無料のオープンソースのPythonベースのWebフレームワークです。モデル・テンプレート・ビュー(MTV)アーキテクチャパターンに従います。[7] [8]これは、米国で501(c)(3)非営利団体として設立された独立した組織であるDjango Software Foundation (DSF)によって管理されています。
Django の主な目的は、複雑なデータベース駆動型 Web サイトの作成を容易にすることです。このフレームワークは、コンポーネントの再利用性と「プラグイン可能性」、コードの削減、結合度の低さ、迅速な開発、および「繰り返さない」という原則を重視しています。[9]設定、ファイル、データ モデルなど、すべてにおいて Python が使用されています。Django は、イントロスペクションを通じて動的に生成され、管理モデルを介して構成される、オプションの管理作成、読み取り、更新、および削除インターフェイスも提供します。
Djangoを使用している有名なサイトとしては、Instagram、[10] Mozilla、[11] Disqus、[12] Bitbucket、[13] Nextdoor、[14] Clubhouseなどがあります。[15]
歴史
Djangoは2003年秋に作成され、ローレンス・ジャーナル・ワールド紙のウェブプログラマーであるエイドリアン・ホロバティとサイモン・ウィリソンがPythonを使ってアプリケーションを構築し始めた。ジェイコブ・カプラン・モスはウィリソンのインターンシップが終了する直前にDjangoの開発初期に雇われた。[16] Djangoは2005年7月にBSDライセンスで公開された。このフレームワークはギタリストのジャンゴ・ラインハルトにちなんで名付けられた。[17]ホロバティはラインハルトの音楽に一部影響を受けたロマのジャズギター奏者である。[18]
2008年6月、新たに設立されたDjango Software Foundation (DSF)が今後Djangoのメンテナンスを行うことが発表されました。[19]
特徴
コンポーネント

HTTPレスポンスを生成する呼び出し可能オブジェクトを「ビュー」と命名するなど、独自の命名法を持っているにもかかわらず、 [7] DjangoのコアフレームワークはMVCアーキテクチャと見なすことができます。[8]これは、データモデル(Pythonクラスとして定義)とリレーショナルデータベース(「モデル」)を仲介するオブジェクトリレーショナルマッパー(ORM)、 Webテンプレートシステムを使用してHTTPリクエストを処理するシステム(「ビュー」)、および正規表現ベースのURLディスパッチャ(「コントローラ」)で構成されています。
コア フレームワークには次のものも含まれています。
- 開発とテストのための軽量でスタンドアロンのウェブサーバー
- HTMLフォームとデータベースへの保存に適した値とを変換できるフォームのシリアル化および検証システム
- オブジェクト指向プログラミングから借用した継承の概念を利用するテンプレートシステム
- 複数のキャッシュメソッドのいずれかを使用できるキャッシュフレームワーク
- リクエスト処理のさまざまな段階で介入し、カスタム機能を実行できるミドルウェアクラスのサポート
- アプリケーションのコンポーネントが事前に定義されたシグナルを介してイベントを相互に通信できるようにする内部ディスパッチャ システム
- Django のコンポーネントをさまざまな言語に翻訳する国際化システム
- Django モデルインスタンスのXMLおよび/またはJSON表現を生成および読み取ることができるシリアル化システム
- テンプレートエンジンの機能を拡張するシステム
- Pythonの組み込みユニットテストフレームワークへのインターフェース
バンドルアプリケーション
メインの Django ディストリビューションでは、次のような多数のアプリケーションも「contrib」パッケージにバンドルされています。
- 拡張可能な認証システム
- 動的な管理インターフェース
- RSSおよびAtomシンジケーション フィードを生成するツール
- 1 つの Django インストールで複数の Web サイトを実行できる「サイト」フレームワーク。各 Web サイトは独自のコンテンツとアプリケーションを備えています。
- サイトマップを生成するツール
- クロスサイトリクエストフォージェリ、クロスサイトスクリプティング、SQLインジェクション、パスワードクラッキングなどの一般的なウェブ攻撃に対する組み込みの緩和策。そのほとんどはデフォルトで有効になっています[20] [21]
- 地理情報システム(GIS) アプリケーションを作成するためのフレームワーク
拡張性
Djangoの設定システムでは、再利用可能なアプリ[22]の規則に従っている限り、サードパーティのコードを通常のプロジェクトにプラグインすることができます。フレームワークの元の動作を拡張するために5000以上のパッケージ[23]が利用可能であり、登録、検索、 APIの提供と使用、CMSなど、 元のツールでは解決できなかった問題に対するソリューションを提供します。
ただし、この拡張性は内部コンポーネントの依存関係によって緩和されます。Djangoの哲学は疎結合を意味しますが、[24]テンプレートフィルターとタグは1つのエンジン実装を想定しており、認証と管理の両方のバンドルアプリケーションは内部ORMを使用する必要があります。これらのフィルターやバンドルアプリはいずれもDjangoプロジェクトの実行に必須ではありませんが、再利用可能なアプリはそれらに依存する傾向があるため、開発者はアプリエコシステムから最大限の利益を得るために公式スタックを使い続けることになります。
サーバーの手配
Djangoは、 Apache、WSGIを使用したNginx、Gunicorn、またはflup(Pythonモジュール)を使用したCherokeeと組み合わせて実行できます。 [25] [26] DjangoにはFastCGIサーバーを起動する機能も含まれており、 LighttpdやHiawathaなど、FastCGIをサポートする任意のWebサーバーの背後で使用できます。他のWSGI準拠のWebサーバーを使用することも可能です。 [27] Djangoは、 PostgreSQL、MySQL、MariaDB、SQLite、およびOracleの5つのデータベースバックエンドを公式にサポートしています。[28] Microsoft SQL Serverはdjango-mssqlで使用できますが、同様にIBM Db2、[29] 、 SQL Anywhere [30]、Firebird用の外部バックエンドが存在します。[31] django-nonrelというフォークがあり、 MongoDBやGoogle App EngineのデータストアなどのNoSQLデータベースをサポートしています。 [32]
DjangoはGlassFishやJBossなどのJava EEアプリケーションサーバー上でPythonと組み合わせて実行することもできます。この場合、データベース接続用のJDBCドライバーを提供するためにdjango-jythonをインストールする必要があります。これにより、Djangoを展開に適した.warにコンパイルする機能も提供されます。[33]
バージョン履歴
Djangoチームは、特定のリリースを「長期サポート」(LTS)リリースとして指定することがあります。[34] LTSリリースでは、その後のリリースのペースに関係なく、通常3年以上の保証期間にわたってセキュリティとデータ損失の修正が適用されます。
ジャンゴコン
2008年9月から開催されている、Djangoの開発者とユーザーのための半年ごとのカンファレンス「DjangoCon」があります。DjangoConは毎年5月か6月にヨーロッパで開催されます。[64]一方、別のカンファレンスは8月か9月に米国各地で開催されます。[65] 2012年のDjangoConは9月3日から8日までワシントンDCで開催されました。2013年のDjangoConはシカゴのハイアットリージェンシーホテルで開催され、カンファレンス後のスプリントはコンピュータトレーニングセンターのデジタルブートキャンプで開催されました。[66] 2014年のDjangoCon USは8月30日から9月6日までオレゴン州ポートランドに戻りました。2015年のDjangoCon USは9月6日から11日までテキサス州オースティンのAT&Tエグゼクティブセンターで開催されました。 2016年のDjangoCon USは、7月17日から22日までペンシルバニア州フィラデルフィアのペンシルバニア大学ウォートン校で開催されました。 [67] 2017年のDjangoCon USはワシントン州スポケーンで開催されました。[68] 2018年のDjangoCon USはカリフォルニア州サンディエゴで開催されました。[69] 2019年のDjangoCon USは、9月22日から27日までカリフォルニア州サンディエゴで再び開催されました。DjangoCon 2021はオンラインで開催され、2022年にはDjangoCon USは10月16日から21日までサンディエゴに戻りました。DjangoCon US 2023は10月16日から20日までノースカロライナ州ダーラムのコンベンションセンターで開催され、DjangoCon US 2024は9月22日から27日にダーラムに戻る予定です。[70] [71]
Djangoミニカンファレンスは通常、オーストラリアPythonカンファレンス「PyCon AU」の一環として毎年開催されます。 [72]これまで、これらのミニカンファレンスは以下の場所で開催されていました。
- 2013年7月、オーストラリアのホバートにて
- 2014年8月と2015年8月にオーストラリアのブリスベンで
- 2016年8月と2017年8月にオーストラリアのメルボルンで開催され、
- 2018年8月と2019年8月にオーストラリアのシドニーで開催されました。
Djangoは世界中でユーザーグループやミートアップを生み出しており、最も注目すべきグループはポーランドで始まり、現在91か国でイベントを開催しているDjango Girls組織です。 [73] [74] [75]
他の言語への移植
プログラマーは Django のテンプレート エンジン設計を Python から他の言語に移植し、適切なクロスプラットフォーム サポートを提供しています。これらのオプションの一部はより直接的な移植ですが、Django に触発されその概念を保持しながらも Django の設計から逸脱するものもあります。
- ルビーのための液体[76]
- Perl用テンプレート::Swig [77]
- PHPとJavaScript用のTwig [78] [79]
- Python用のJinja [80]
- Erlang用のErlyDTL [81]
Djangoフレームワークに基づくCMS
フレームワークとしての Django は完全なCMS を構築できますが、Django フレームワークに基づいて構築され、それを拡張する専用の CMS プロジェクトもあります。以下は、より人気のある Django ベースの CMS のいくつかのリストです。
参照
- 高速API
- フラスコ
- ジャム
- パイロンプロジェクト
- ウェブ2py
- 竜巻
- ルビーオンレール
- ウェブフレームワークの比較
- Django RESTフレームワーク
参考文献
- ^ abc "django/README". GitHub . 2020年9月8日閲覧。
- ^ 「Django FAQ」 。 2019年3月27日閲覧。
- ^ 「リリース 5.1.3」。2024年11月5日。 2024年11月13日閲覧。
- ^ 「Django ダウンロード」 。2020年8 月 7 日閲覧。
- ^ 「django/LICENSE」。GitHub 。 2020年9月8日閲覧。
- ^ 「FAQ: 一般 - Django ドキュメント - Django」 。2016年4 月 30 日閲覧。
- ^ ab 「FAQ: 一般 - Django ドキュメント - Django」 。2016年4 月 30 日閲覧。
- ^ ab Adrian Holovaty、Jacob Kaplan-Moss、他。The Django Book。2016年9月2日時点のオリジナルよりアーカイブ。2013年9月3日閲覧。Django
はこのMVCパターンに忠実に従っており、MVCフレームワークと呼ぶことができる。
- ^ 「デザイン哲学」Django . 2018年3月18日閲覧。
- ^ 「Instagram を動かすもの: 何百ものインスタンス、何十ものテクノロジー」。Instagramエンジニアリング。
- ^ 「Python」。Mozilla Developer Network。2012年2月8日時点のオリジナルよりアーカイブ。 2016年4月30日閲覧。
- ^ Robenolt, Matt. 「Django を 80 億ページビューに拡張」。blog.disqus.com。
- ^ 「DjangoSuccessStoryBitbucket – Django」。2016年4月20日時点のオリジナルよりアーカイブ。2016年4月30日閲覧。
- ^ 「反Facebook:アメリカの4つの地域のうち1つが現在このプライベートソーシャルネットワークを使用している」The Verge。2014年8月18日。 2016年6月16日閲覧。
- ^ Demi, Luke (2021年8月15日). 「暴れまわる群れを抑制する⛈ DjangoでCPU使用率を80%にする方法」Clubhouseブログ。2021年8月16日閲覧。
- ^ Willison, Simon . 「Django Webフレームワークの歴史は?なぜ「ニュースルームで開発された」と表現されているのか?」Quora . 2019年10月18日閲覧。
- ^ 「Introducing Django」. The Django Book. 2018年7月29日時点のオリジナルよりアーカイブ。2018年7月29日閲覧。
- ^ 「レビュー:エイドリアン・ホロヴァティの遊び心があり精密な『メロディック・ギター・ミュージック』」。アコースティック・ギター。2023年12月12日。2023年12月30日時点のオリジナルよりアーカイブ。
- ^ 「Announcing the Django Software Foundation - Weblog - Django」。2016年4月30日閲覧。
- ^ 「Django のセキュリティ」 Django プロジェクト2013 年3 月 25 日閲覧。
- ^ Socol, James (2012). 「ベストな基本セキュリティプラクティス (特に Django の場合)」。2013 年3 月 25 日閲覧。
- ^ 「再利用可能なアプリとは? — django-reusable-app-docs 0.1.0 ドキュメント」 。2016年4 月 30 日閲覧。
- ^ 「Django パッケージ API パッケージ リスト」 。2023年4 月 17 日閲覧。
- ^ 「設計哲学 - Django ドキュメント - Django」。2016 年 3 月 4 日時点のオリジナルよりアーカイブ。2016年4 月 30 日閲覧。
- ^ 「Django のデプロイメントに関するドキュメント」。2012 年 1 月 11 日時点のオリジナルよりアーカイブ。
- ^ 「Cherokee Web Server - Cookbook Setting up Django - Cherokee Documentation」 。 2016年4月30日閲覧。
- ^ Django を Apache と mod_wsgi で使用する方法。Wayback Machineに 2013 年 3 月 8 日にアーカイブ。公式 Django ドキュメント。
- ^ 「Django ドキュメント」。Djangoドキュメント。2023年6 月 9 日閲覧。
- ^ ibmdb. 「GitHub - ibmdb/python-ibmdb: code.google.com/p/ibm-dbから自動的にエクスポートされました」。GitHub。2016年4 月 30 日閲覧。
- ^ 「Google Code アーカイブ - Google Code プロジェクト ホスティング用の長期ストレージ」 。2016年4 月 30 日閲覧。
- ^ maxirobaina. 「GitHub - maxirobaina/django-firebird: django 用の Firebird SQL バックエンド」. GitHub . 2016 年4 月 30 日閲覧。
- ^ 「Django non-rel」 。 2016年4月30日閲覧。
- ^ beachmachine. 「GitHub - beachmachine/django-jython: Jython 上での Django 開発用のデータベース バックエンドと拡張機能」. GitHub . 2016 年4 月 30 日閲覧。
- ^ 「Django のリリース プロセス - Django ドキュメント - Django」 。2016年4 月 30 日閲覧。
- ^ 「Django をダウンロード - Django」。www.djangoproject.com。
- ^ 「FAQ: インストール - Django ドキュメント - Django」. docs.djangoproject.com .
- ^ 「Django 0.90 の紹介」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 0.91 リリース」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 0.95 の紹介」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 0.96 を発表!」 Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 1.0 がリリースされました!」 Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 1.1 リリース」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 1.2 リリース」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 1.3 リリース」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 1.4 リリース」。Django ウェブログ。2013 年 2 月 2 日閲覧。
- ^ 「Django 1.5 リリース」Django ウェブログ。2013 年 2 月 27 日閲覧。
- ^ 「Django 1.6 リリース」Django ウェブログ。2013 年 11 月 6 日閲覧。
- ^ 「Django 1.7 リリース」Django ウェブログ。2014 年 9 月 4 日閲覧。
- ^ 「Django 1.8 リリース」Django ウェブログ。2015 年 4 月 2 日閲覧。
- ^ 「Django 1.9 リリース」Django ウェブログ。2015 年 12 月 1 日閲覧。
- ^ 「Django 1.10 リリース」Django ウェブログ。2016 年 8 月 1 日閲覧。
- ^ 「Django 1.11 リリース」Django ウェブログ。2017 年 4 月 4 日閲覧。
- ^ 「Django 2.0 リリース」Django ウェブログ。2017 年 12 月 3 日閲覧。
- ^ 「Django 2.1 リリース」Django ウェブログ。2018 年 8 月 2 日閲覧。
- ^ Django 2.2 リリースノート。2019 年 7 月 1 日に閲覧。
- ^ Django 3.0 リリースノート。2019 年 12 月 2 日閲覧。
- ^ Django 3.1 リリースノート。2020 年 8 月 5 日閲覧。
- ^ 「Django 3.2 リリースノート」。2021年4月6日。 2021年6月7日閲覧。
- ^ 「Django 4.0 リリースノート」。2021年12月7日。 2022年8月4日閲覧。
- ^ 「Django 4.1 リリースノート」。2022年8月3日。 2022年8月4日閲覧。
- ^ 「Django 4.2 リリースノート」 。 2022年8月4日閲覧。
- ^ 「Django 5.0 リリースノート」。2023年12月4日。 2023年12月4日閲覧。
- ^ 「Django 5.1 リリースノート」。2024年8月7日。 2024年8月8日閲覧。
- ^ DjangoCon EU シリーズ 2016 年 3 月 4 日にWayback Machineにアーカイブ、Lanyrd.com
- ^ DjangoCon US シリーズ 2016 年 4 月 2 日にWayback Machineにアーカイブ、Lanyrd.com
- ^ 「DjangoCon」。DjangoCon。2012年8月5日時点のオリジナルよりアーカイブ。2012年7月29日閲覧。
- ^ 「DjangoCon」 DjangoCon . 2016年12月1日閲覧。
- ^ 「DjangoCon」. DjangoCon.
- ^ 「DjangoCon」. DjangoCon.
- ^ 「DjangoCon US 2023について」DjangoCon US . 2024年7月17日閲覧。
- ^ 「DjangoCon USについて」DjangoCon US . 2024年7月17日閲覧。
- ^ DjangoCon AU. Djangocon.com.au. 2019年12月16日閲覧。
- ^ 「ウェブサイト構築に革命をもたらしたローレンス生まれのDjango、10周年を祝う」。ローレンス・ジャーナル・ワールド。2015年7月9日。 2019年10月18日閲覧。
- ^ 「Django Girls - プログラミングの旅を始めましょう」。2019年10月21日閲覧。
- ^ 「Django グループ」。Meetup。
- ^ Shopify. 「– Liquid テンプレート言語」. Liquid テンプレート言語.
- ^ 「Template::Swig - Django にインスパイアされた Swig テンプレート エンジンへの Perl インターフェース。 - metacpan.org」。metacpan.org。
- ^ Symfony. 「ホーム - Twig - 柔軟で高速、かつ安全な PHP テンプレート エンジン」. twig.sensiolabs.org . 2017 年 7 月 9 日時点のオリジナルよりアーカイブ。2014 年12 月 10 日閲覧。
- ^ "twigjs/twig.js". GitHub .
- ^ 「ようこそ - Jinja2 (Python テンプレート エンジン)」。jinja.pocoo.org。
- ^ "erlydtl/erlydtl". GitHub .
- ^ 「django CMS - Django によるエンタープライズ コンテンツ管理 - django CMS」。www.django-cms.org 。2020年11 月 11 日閲覧。
文献
- Jaiswal, Sanjeev、Kumar, Ratan (2015 年 6 月 22 日)、『Learning Django Web Development (第 1 版)』、Packt、p. 405、ISBN 978-1783984404
- ラビンドルン、アルン(2015年3月31日)、Djangoデザインパターンとベストプラクティス(第1版)、Packt、p. 180、ISBN 978-1783986644
- オズボーン、トレイシー(2015年5月)、Hello Web App(第1版)、トレイシー・オズボーン、p. 142、ISBN 978-0986365911
- Bendoraitis, Aidas (2014 年 10 月)、Web Development with Django Cookbook (第 1 版)、Packt、p. 294、ISBN 978-1783286898
- Baumgartner, Peter; Malet, Yann (2015)、High Performance Django (第 1 版)、Lincoln Loop、p. 184、ISBN 978-1508748120
- エルマン、ジュリア; ラビン、マーク (2014)、Lightweight Django (第 1 版)、O'Reilly Media、p. 246、ISBN 978-1491945940
- パーシバル、ハリー (2014)、『Python によるテスト駆動開発 (第 1 版)』、O'Reilly Media、p. 480、ISBN 978-1449364823、2017年7月16日時点のオリジナルよりアーカイブ。2014年10月26日閲覧。
外部リンク
- 公式サイト
