LoginSignup
4
5

More than 1 year has passed since last update.

【Django入門】Djangoとは?Djangoの基本的な処理の流れ

Posted at

前提

・Djangoとは何か? Djangoの全体像について解説していきます。
・これからPythonでWebアプリを作ってみたい入門者、IT初学者向けの記事です。

Djangoとは?

Djangoは、Python用のフレームワークです。
フレームワークとは、
画面から画面への移動や、データの登録、メール送信、基本的なセキュリティ設定など、よく使う機能があらかじめ用意されたツールです。

どうしてDjangoを使うの?

上でも述べたように、DjangoはWebアプリでよく使う機能があらかじめ用意してくれています。

Djangoを使うことで、開発者は頻繁に使う機能を1から作る手間がなくなります

また、Djangoはオープンソースという無料で提供されているツールです。

無料で使えて手間が少なくなるのだから、PythonでWebアプリを作る際に使わない理由がありません。

Djangoの全体像

Djangoアプリは、1つのプロジェクト・ディレクトリと、複数のアプリケーション・ディレクトリから構成されます。
他にも様々な設定ファイルを持っていますが、まずはこの基本的な構成を覚えておきましょう。
Djangoの構成.drawio (2).png

TwitterなどのSNSをDjangoで作ったとしましょう。
SNSアプリ1つにつき、1プロジェクトで管理します。

SNSアプリは、
「会員登録機能」、「コメント投稿機能」、「いいね機能」などの、複数の機能を持っていますよね。
このそれぞれの機能が、各アプリケーションとなります。
(「アプリケーション1」は「会員登録機能」を管理し、「アプリケーション2」は「コメント投稿機能」を。。など)

このように、1つの機能をアプリケーションごとに管理することで、
プログラムの変更が容易になるというメリットがあります。

仮に全ての機能を1つのアプリケーションに詰め込んだ場合、
数週間・数ヶ月後には、「あれ。。あの機能はどのファイルの、どの辺に書いたんだっけ?」となってしまうことがあります。
そのような事態にならないためにも、機能毎に1ディレクトリ(アプリケーション)でまとめると、管理がしやすくなります。

企業などで複数人で開発を行う場合、
「Aさんは会員登録機能を作ってね」「Bさんはコメント投稿機能を」などと、
機能毎に担当者の役割を分ける際にも、この複数アプリケーションの構成は役立ちます。

1プロジェクト・複数アプリケーションの構成は、
個人で小規模なアプリケーションを作る分には、メリットを感じにくいかもしれませんが、
集団開発やコードの量が数千〜数万におよぶ大規模なシステム開発の場合、効果を実感しやすいかと思います。

Djangoアプリの処理の流れ

Djangoで開発したWebアプリを、ユーザーがSafariやChromeなどのブラウザで操作した際の流れについて、説明したいと思います。

以下の図は、あるDjangoで開発されたWebサイトで、ユーザーが会員登録した際、システム内でどのような処理が行われるかを表しています。

自分が良く使うSNSやショッピングサイトで、会員登録した時のことを思い出しながら、処理の流れを追って見てください。

Django Overview.drawio (1).png

  1. ユーザーがブラウザから、Webサイトの登録ページにアクセス。その後、名前やメールアドレスなど必須項目を入力し、画面上の登録ボタンを押します。この際、「会員登録よろしく!」というリクエストが、システム側に飛びます。

  2. 飛んできたリクエストを、プロジェクトのルーティングが受け取ります(ルーティングは、プロジェクトとアプリケーションの2つに分類できる)。プロジェクトのルーティングは、リクエストの種類によって、どのアプリケーションに情報を伝えるかを判断します。今回は、会員機能を司る「アプリケーション1」に、「会員登録のリクエストがあったよ」と情報を伝えます。

  3. プロジェクトのルーティングからの情報を、アプリケーションのルーティングが受け取ります。今回は、会員機能の中でも会員登録を担当する「ビュー1」に情報を伝えます。

  4. 「ビュー1」はフォームにユーザーの会員情報を伝えます。フォームは受け取った情報のバリデーション(正しい値が入力されているかのチェック)を行います

  5. フォームはバリデーションの結果を「ビュー1」に返します。ここまでの処理に問題がなければ、入力データをデータベースに入れる準備が整います。

  6. 「ビュー1」はモデルにユーザーの会員情報を伝えます。モデルは、データベースとのやりとりを担当するところです。

  7. モデルは「ビュー1」から受け取った情報をデータベースに「この情報を登録して!」と伝えます。

  8. データベースは登録処理の結果をモデルに伝えます。

  9. モデルはデータベースから受け取った情報を「ビュー1」に伝えます。

  10. 「ビュー1」はモデルから受け取ったデータベースからの情報を元に、テンプレートブラウザの画面を作成します。

  11. テンプレートは作成した画面を返します。

  12. リクエストに対する返答(レスポンス)として、画面を返します。これでユーザーは会員登録が完了し、WebサービスによってはTOPページに移動したり、「登録が完了しました!」などとメッセージ画面が表示されます。

ここまで、Djangoの主な処理の流れとなります。

※処理によっては、フォームやモデルは使われないこともあります。例えばデータを登録する必要のないサービスで、単純でページ移動をする場合など。

Djangoを構成する部品

ここで先ほど出てきた5つの部品(コンポーネント)の役割を、一つずつまとめたいと思います。

ルーティング

ユーザーからのリクエストを、担当のビューに伝える。会員登録に関してはビュー1、コメント投稿機能に関してはビュー2、などと。
ルーティングは主にプロジェクトのルーティングと、アプリケーション毎のルーティングがある。

ビュー

各コンポーネントの橋渡しを行う。アプリケーションの中心的な役割を果たす。

フォーム

ユーザーが画面で入力した値をDjango内部で保持します。また、入力された値が正しいか、チェックを行います。名前や住所は全角か、文字数制限を超えていないか、メールアドレスには@が入っているか、パスワードはアルファベットと数値が含まれているか、、など。

ちなみに入力値のチェックをバリデーションといいます。

モデル

データベースとのやり取りをしてくれる。
モデルを使うことで、SQL(データベースを操作する言語)を書くことなく、Pythonでデータベースの操作(データの登録、更新、削除など)が行えます。

テンプレート

画面を作成する。
データベースから取得した情報をビューから受け取り、それを元に画面を生成したりします。
例えばAmazonのようなショッピングサイトなどで、ユーザーごとに購入履歴の画面の表示が違ってたりしますよね。
あのような画面も、データベースに登録されているデータを元に、それぞれのユーザーの画面を作ってたりします。

まとめ

  • Djangoは、Python用のフレームワーク。
  • フレームワークはあらかじめよく使われる機能を用意してくれているため、オリジナルの機能に注力でき、開発の効率が上がる。
  • Djangoは1つのプロジェクトと複数のアプリケーションから構成される。
  • Djangoは役割毎に5つの部品に分けられる(ルーティング、ビュー、フォーム、モデル、テンプレート)

処理の流れは文章だけだと正直分かりにくいと思うので、実際に何か作ってみるのが理解しやすいと思います。

参照

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5