いよいよDjangoです。PythonにとってはWebが必ずしも主戦場というわけでもないので、もしかするとベテランの方でも1回もWebアプリ書いたことないなんてことがあっても不思議ではありません。そんな中でのWebアプリケーション・フレームワークの1つということなので、大分限定されているかも知れませんが、ひとまず現時点では当サイトのメインコンテンツの1つになると思います。
Djangoとは
すでにWebアプリケーション・フレームワークと言ってしまいましたが、いわゆるMVCモデルをやんわり?踏襲?しているフルスタックのフレームワークです。
Djangoフレームワークのコア部分はデータモデル(Pythonクラスとして定義される)と関係データベースとの間を仲介するO/Rマッパー、正規表現に基づくURLディスパッチャ、要求を処理するビューシステム、テンプレートシステムから構成される。
https://ja.wikipedia.org/wiki/Django
とてもすっきりと言い表してくれている気がします。要するにurls.pyとviews.pyとmodels.pyをPythonコーディングして、templateとしてHTML内にちょこっとだけロジック込みの変数を並べて画面(HTML)が返るようにするって感じです。
せっかくなので図にしてみます。なお、処理や構造の正確性では無く、この後学習していく上でのイメージを優先していますので、その点はご承知おきください。
① | ブラウザからのリクエストはDjangoプロジェクトのurls.pyが受けます。urlの内容からどの アプリのurls.pyに引き渡すかを判定します。 |
② | アプリ毎のurls.pyではviews.pyのどの機能を呼び出すかをurlで判定します。 |
③ | 処理ロジックのメインはこのviews.pyです。モデルを操作することでDB上のデータをオブジェクトとして入手します。 |
④ | Pythonのオブジェクトとしてテーブル上のレコードを表現したがモデルです。基本的にはSQLを書く事無く、モデルオブジェクトを操作することでデータを操作します。 |
⑤ | DjangoのもつO/Rマッパーの機能がSQLを発行します。 |
⑥ | その結果をモデルオブジェクトに詰め込みます。 |
⑦ | views.pyではモデルオブジェクトとして得られたデータを加工し、テンプレートに処理を引き渡します。 |
⑧ | テンプレートでデータをHTML上に載せてブラウザにて画面が表示されます |
本稿の構成
本稿については、これまでと少し形式が変わります。これまでは完成形のソースコードを提示してから、それに向かってどんなプログラミングを施していくかという流れでしたが、さすがにフレームワークであるDjangoのアプリですので無理があります。
一部順序通りに説明が出来ていない部分や、それまでに紹介したアプリの開発具合とは異なったところを出発点にするなど、完全なるステップバイステップにはなっていない部分が登場するかと思います。