目的
Spring経験者が、Djangoを学習するので、Springとの違いを考えながら、少しづつ学習した内容をまとめる。
学習書籍
アーキテクチャ
- Webサーバとアプリケーションの間にWSGIサーバがある。
- URLディスパッチャ:URLに対して、どのビューを呼び出すかを決める役割を担う。
本ではControllerに該当するとのことだが、どちらかというとHandlerに該当するように思えた。
読み続けていくと分かるかもしれないので、メモ
- ミドルウェア:前処理と後処理を行う。
ControllerAdviceに似てそうだが、共通的な定義じゃなければ似て非なるもの。
読み進めていけばわかるかもなので、メモ
- ビュー:Springのビューと似ているが異なる。Djangoではビューを二つに分けていて、テンプレート(データの見せ方)と「ビュー(データの選び方)」となっている。
プロジェクト構成
- プロジェクト:プロジェクト固有のモジュールとアプリケーションを持つ。
- アプリケーション:固有のモジュールを持つ
Mavenプロジェクトと似てるかなと思ったが、全く違った。
アプリケーションは入れ替え可能なように作成するのが良いとのことなので、親子関係や依存関係のあるjarというよりは、自分たちのサードパーティのライブラリを作ってるようなイメージに近そう。
URLディスパッチャとURLconf
-
URLconfを読み込んでURLディスパッチャがどのビューを実行するかを決定している。URLconfの書き方は、パスコンバータを使った書き方、正規表現を使ったURLパターンがある。
-
エラーハンドリングはURLディスパッチャで行ってくれ、例外系のハンドリングもしてくれる。
-
URLパターンの設定をルートのURL.confのみに追加していくと、ルートのURL.confが肥大化してくので、アプリケーションディレクトリごとに1つずつurls.confを配置するのがベストプラクティス。