Django とは
DjangoとはWeb開発におけるバックエンドを開発する際に用いられるフレームワークである。言語はPython。
フレームワークとは、Webシステムにおけるプログラムの共通の流れ(MVCアーキテクチャ)をひな型にしたものである。
Djangoは、MVCアーキテクチャに基づいているものの、ViewがControllerの役割を果たし、Viewの代わりにTempleteを採用するMVTアーキテクチャである。しかし、Controllerがなくなったわけではなく、ユーザからのWebアクセスをControllerが受け取り、Viewを呼び出す。その後ViewがModel,Templeteを呼び出し、DBとのやり取りや画面表示を制御する。
開発の流れは、まず「プロジェクト」を作成し、Webアプリケーションが動作するためのインフラを構築する。その後、プロジェクト内に「アプリケーション」をフォルダを作成する。この「アプリケーション」がMVCアーキテクチャの処理をまとめていくので、DjangoはアプリケーションごとにMVCコンポーネントが用意され、プログラムが構築される。
「プロジェクト」は、Webアプリケーション,またはWebサイトの全体を定義するファイルである。例えば、設定ファイル,ルーティング,管理スクリプトなどである。一方で「アプリケーション」は、そのアプリやサイトにおける特定の機能,モジュールの単位である。例えば、ブログ機能やユーザ認証機能,ログ監視機能などである。このように、アプリケーションが独立していることで、他アプリケーションでの再利用,メンテナンスの容易さ,同時並行開発,テストの容易さなどのメリットがある。
実際にやってみる
Anaconda Promptで操作する。
プロジェクトの作成
#プロジェクトをデスクトップに作成するため移動
cd desktop
#プロジェクトを作成する。
django-admin startproject myProject
#動作確認のため移動
cd myProject
#Djangoプロジェクトの実行
python manage.py runserver
#以下のような実行結果が得られる
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the
migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 26, 2022 - 13:53:00
Django version 4.1.2, using settings 'myProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK
#上の実行結果のうち、[Starting development...]の後ろに開発サーバーのURLが示されるのでブラウザで開く。
127.0.0.1はループバックアドレスである。localhostでも同じになる。
ブラウザでDjangoのデフォルトページが表示されれば正常である。
[Webサーバの終了方法]
コマンドプロンプト上でCtrl + C
アプリケーションの作成
#Djangoプロジェクトの中の"manage.py"を指定する。試しにhelloというアプリケーションを作成してみる。
python manage.py startapp hello
作成されたhelloアプリケーションの中にも複数のファイルがある。
viewの書き換え
#helloアプリケーションの中の"views.py"を編集する。
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello Django!")
【コードの説明】
まず、ユーザがブラウザからサーバへHTTPリクエストを送信する。サーバはリクエスト受け取ったらindex関数を呼び出し、リクエストの情報をrequestに格納する。次にサーバはHttpResponsクラスを用いHTTPレスポンスを作成し、クライアント側へ返す。その返す内容を指定するときにreturnを使う。
URLの書き換え
///書き換えではなくアプリケーション内にurls.pyを作成する。
次に、特定のアドレスへアクセスしたときに「views.py」が実行されるように「urls.py」を書き換える。「urls.py」はURLルーティングを管理するためのファイルである。
成果物
簡単なwebアンケートシステム
必要事項を選択、入力し、提出ボタンをクリックすると入力結果が表示される。forms.pyで入力情報が保持される。TempleteのcssはBootstrapを利用した。
基本的なことしかやっていないので特に困難な部分はなかったが、初めてのwebアプリケーション開発であったため学んだことは多くあった。viewやtemplete、formsでタグを統一して使っているところから、オブジェクト指向をより強く感じた。基本的なwebアプリケーションの構造を理解した。
参考にしたのは大学の講義資料とその講義資料の参考資料(ブログなど)である。バージョンによって古くなっている場合があるので、注意が必要であった。
データベースと繋げるためにはModelの学習をしなければならない。