[書評]現場で使えるDjangoの教科書《基礎編》
https://www.amazon.co.jp/dp/4802094744
DjangoとはPythonでWebアプリケーションを作成するためのフレームワークで、必要なものはなんでも揃っているのが特徴でフルスタックと呼ばれています。
Djangoは海外ではInstagram、edXなどで利用され、日本でも日経電子版や、connass、PyQなどの事例があります。小から大規模のWebアプリケーションで利用されています。
本書は公式ドキュメントの内容を整理した上で、アーキテクチャやモジュールの役割や実際の運用までを解説し、また本書の著者が推奨するベストプラクティスの紹介がされています。
第1部 アーキテクチャ、プロジェクト構成の解説
DjangoはMTVフレームワークというモデル、テンプレート、ビューで構成されています。実際のプロジェクトは、
$ django-admin.py startproject mysite
で作ることができます。また、 accountというアプリをmysiteプロジェクト内に作る場合は、
$ cd mysite/
$ python manage.py startapp accounts
を実行します。本書の解説に従ってプロジェクトを作ると以下の画像のようになります。
第2部 各モジュールの役割
url、view、model、template、form、middleware、settingファイルの役割を解説しています。
プロジェクトと各アプリケーション下のurl.pyにURLパターンを書いておくことで、URLディスパッチが設定することができます。また、アクセスされたURLがどのパターンにも当てはまらない時にエラーハンドリングをするようにすることもできます。
viewではリクエストに対してレスポンスを作成することができます。これは関数ベースとクラスベースで書くことができ、本書ではクラスベースが推奨されています。また、ログイン、ログアウトも簡単に実装することができます。
DjangoではDjango ORMと呼ばれるORマッパーを提供しており、modelに各テーブルの構造を書いておくだけで、Djangoのマイグレーションの機能を使えばSQL文がなくてもテーブルの作成、変更が行えます。また、リレーションも1対多、多他多、1対1の設定もできます。また、テーブル操作に関して複数のメソッドが用意されており、特別な処理がない限り、こちらを使うと良いと思います。
DjangoにはHTMLファイルに変数の中身を表示したり、条件分岐などのロジックを埋め込むことができるtemplateの機能があります。ただし、変数定義はできないため、view側で用意する必要があります。この機能も多数あり、公式ドキュメントも参考にすると良いと思います。ベストプラクティスとして、必ず表示する必要がある共通の内容にはベーステンプレートを用意することを本書では推奨しています。
formには、
・入力データの保持
・入力データのバリデーションを行い、妥当性検証済みのデータやエラーメッセージの保持
の役割があります。このformとtempalteやviewを組み合わせることで入力の妥当性を設定することができます。
また、DjangoはCSRF対策への機能もあり、以下のようにするだけで設定ができます。
<form action="" method="post" class="ui form">
....
{% csrf_token %}
</form>
middlewareはDjangoの主な機能(view、model、template)とWebサーバ、アプリケーションサーバの中間にあり、この設定は必須ではないですが、積極的に使うことを推奨しています。例えば、以下のコードを入れるだけでHTTPにアクセスした場合自動的にHTTPSにリダイレクトします。
SECURE_SSL_REDIRECT = True
また、言語設定やキャッシュの変更も容易にできます。
settingではデバッグや静的ファイル、データベースなど環境の設定ができます。また、個人の開発環境はlocal_settings.pyに書くことで本番用の環境と分けて設定することができます。
第3部 Djangoの機能
Djangoにはマイグレーションという、settingで設定したデータベースにに、modelで定義したテーブルの作成、変更をすることができます。また、テーブル更新の履歴も自動的に作成されます。開発用サーバ はrunserverコマンドで実行でき、ローカル環境でポート番号を指定して動かすことができます。
管理者サイトもあり、それもカスタマイズすることもできます。管理者サイトの利用は条件がありますが、それは公式ドキュメント通りに設定すれば開くことができると思います。
便利なDjangoパッケージも十分にあり、Django Packagesにアクセスすれば確認できます。こちらも見てみると良いと思います。
まとめ
本書は公式ドキュメントよりもまとまっと形式でDjangoの学習をしたい方、Djangoのベストプラクティスを知りたい方にお勧めできるのではないかと思います。
説明はわかりやすく、なぜこの書き方が良いのかの説明もあり、大変勉強になったと思います。また2系と1.11系の違いもあり、バージョンに関するアドバイスもあったのはよかったと思います。
Djangoの本はまだまだ少ないので、本書は入門として良書だと思いました。
この記事が気に入ったらサポートをしてみませんか?