Fork me on GitHub

Django

Django は「電池付属(batteries-included)」というコンセプトでPythonのWebフレームワークとして広く利用されています。「電池付属」というのは、Webアプリケーションを構築するための一般的な機能が、他のライブラリを利用するのではなく、フレームワーク自身によって提供されていることを指します。

Official Django logo. Trademark Django Software Foundation.

Django frameworkでは、認証URLルーティングテンプレートシステムORMデータベースマイグレーション(v1.7以降) が提供されています。

ユーザ認証を実装するためにFlask-Loginのような、分離したライブラリを必要とするFlaskのようなフレームワークと、組み込みの認証機能を比較してみましょう。

電池付属と拡張性という考え方は、単純にフレームワークを作る際のアイデアの違いです。どちらのアイデアが優れているというものではありません。

Djangoを選ぶ利点

Djangoプロジェクトは安定していて、性能やコミュニティもフレームワークが作られた当時と比べて飛躍的に向上しています。詳しいチュートリアルやベストプラクティスもWebや書籍で簡単に見つかります。データベースマイグレーションのような、新しい機能の実装にも積極的です。

著者としては、最初のフレームワークとしてDjangoをお勧めします。公式ドキュメントやチュートリアルが素晴らしく、Django DistrictDjango BostonSan Francisco Djangoなど各地域ごとにユーザグループがあり、初心者が問題を解決しやすいでしょう。

DjangoでPythonを学ぶなという議論もありますが、Web開発に飛び込む前にPythonの基礎を学んでいれば問題ありません。

Djangoチュートリアル

  • Tango with Djangoは無料で読めるDjangoの包括的なガイドです。このガイドがDjangoの学び始めには最も役立ったという人もいます。
  • Daniel GreenfeldとAudrey Royによる2 Scoops of Djangoは、DjangoによるWeb開発を正しく学びたいのなら、購入する価値のある書籍です。
  • Test-Driven Development with PythonはDjangoとJavaScriptを使ったWeb開発にフォーカスしています。Djangoを使って実践的なアプリケーションをテスト駆動開発によって開発する方法を学ぶことができます。また、NoSQL、WebSocket、非同期通信についても触れられています。オンラインであれば無料、書籍版はO'Reillyから出版されています。
  • Django subredditでは、Djangoを学ぶための最新のリソースが投稿され、質問するにも良い場所でしょう。
  • Lightweight DjangoはDjangoをより小さくシンプルなコンポーネントに分割して利用するための方法を学ぶことができます。
  • django-awesomeでは、Djangoに関係するライブラリや資料のリストが紹介されています。
  • Starting a Django ProjectではDjango(v1.5~1.7)によるプロジェクトのセットアップ方法について説明されています。
  • recommended Django project layoutでは、初心者向けにDjangoプロジェクト内のアプリケーションにおけるディレクトリ構成を説明しています。
  • Django Request-Response Cycleでは、Djangoアプリケーションへアクセスした際に内部で何が起こっているのかを説明しています。

Djangoのビデオ

Kate Heddlestonと著者によるDjangoCon 2014でのChoose Your Own Django Deployment Adventureでは、初めてDjangoアプリケーションをデプロイする際に直面する様々なシナリオについて解説しています。

  • GoDjangoスクリーンキャスト及びチュートリアルでは、Djangoアプリケーションを構築するための短いチュートリアルを無料で観ることができます。
  • Djangoの中心的なコミッターによるDjango: Under the Hood 2014のビデオ、スライドはORM、国際化、テンプレートなどの話題について触れられています。

Django 1.7のリソース

  • Designing Django's Migrationsでは、South及び、Djangoに組み込まれたマイグレーションツールのメイン開発者であるAndrew GodwinがDjango 1.7の新しいマイグレーションについて解説しています。
  • Real Pythonのmigrations primerでは、Southによるマイグレーションと、Django 1.7のマイグレーションの違いについて解説しています。
  • Andrew Pinkhamによる"Upgrading to Django 1.7"シリーズは、Djangoの新しい機能について、そしてそれを利用する方法を学ぶことができます。Part 1part 2part 3part 4を読むことができるようになっています。

DjangoとAngularJS(Djangular)のリソース

Django ORMのリソース

Django ORMはシンプル、またはやや複雑なデータベースの操作に適しています。場合によってORMを使うことで直接SQLを書くよりも複雑になってしまい、SQLAlchemyを使う方法もあります。

SQLを直接記述することは、技術的に可能ではありますがデータベースの実装によってクエリを書き分けなければなりません。ORMはDjangoと密接につながっているので、デフォルトのORMをSQLAlchemyに置き換えるためにはDjangoをハックしなければなりません。ただDjangoのコアコミッターたちはデフォルトのORMがSQLAlchemyに置き換わるのは時間の問題だと考えています。彼らの素晴らしい仕事によりDjango 1.9、またはそれ以降のバージョンで実現するかもしれません。

大部分のDjangoプロジェクトではデフォルトのORMが利用されているので、現在のフレームワークでの応用的な利用方法やツールに関する資料を読んでおきましょう。

  • Django Debug ToolbarはDjango ORMのデータベースクエリをデバッグするための強力なツールです。開発中は適切なクエリを書いていることを確認することを強くお勧めします。Django SilkのようなSQLだけにとどまらないデバッグツールもあります。
  • Migrating a Django app from MySQL to PostgreSQLではMySQLからPostgreSQLに移行する方法が解説されています。しかし、著者個人の意見としては、すでに運用中のDjangoアプリケーションのデータベースを他のバックエンドに移行するのはORMのちからを借りても困難だと考えています。
  • Django Model Descriptorsでは、ビジネスロジックをモデルに取り込みビューの複雑化を回避する方法、そして各ビュー間で再利用する方法について検討しています。

オープンソースのサンプルプロジェクト

  • Txt 2 Reactは、プレゼンテーション中に視聴者がフィードバックや質問を書き込めるアプリケーションです。
  • OpendutyはPagerDutyに似たウェブサイトのステータス確認、及び監視システムです。
  • CourtsideはPyCoder's Weeklyの作者によって開発された、スポーツイベントを探すためのアプリケーションです。
  • Djangoで作られた音声による自動応答システムのレポジトリです。part 1part 2に分けられています。blog postで詳細に解説されています。

Djangoプレジェクトのテンプレート

  • Cookiecutter DjangoはDaniel Greenfeldによるプロジェクトのテンプレートで、Audrey RoyのCookiecutterで利用されています。Herokuにデプロイすることができます。
  • Two Scoops Django project templateもPyDannyとAudrey Royによる、プロジェクトテンプレートです。Two Scoopsの書籍で説明されている構成を素早く組み上げることができます。

Djangoを学ぶためのチェックリスト

あなたの開発マシンにDjangoをインストールしましょう。

"polls"チュートリアルをやりましょう。

Djangoのリソースにリストされているチュートリアルで学んだ知識を使って、シンプルなアプリケーションをいくつか作ってみましょう。

公式ドキュメントや以下のリンクを読んで、自分のDjangoプロジェクトを書き始めましょう。アプリケーションを正しく構築する方法を学ぶ上で重要となる、失敗をたくさんすると思います。

2 Scoops of Django を読んで、Djangoのベストプラクティスと、Djangoでアプリケーションを作るためのより良い方法を理解してください。

デプロイの章に進み、あなたのDjangoプロジェクトを公開しましょう。

Djangoアプリケーションの次に学ぶことは?

ひどいUIを作ってしまった。Webアプリケーションをかっこ良くするには?

Djangoアプリケーションに外部APIを組み込みたい。

Djangoアプリケーションをデプロイする方法は?

どのようにコードのバージョン管理をすれば良いですか?


Interested in a complete Full Stack Python book with detailed tutorials and example code? Sign up here and you'll get an alert email if a book is created. No other emails will be sent other than sign up confirmation.