Django入門: アプリのインストール ~ 簡単な一行掲示板アプリを作る その3【Windows10】
目次
はじめに
前回までにDjangoでlinebbs
というプロジェクトを作成し、そのプロジェクト内にbbs
というアプリを作るところまでやりました。
今回は作成したアプリをプロジェクトにインストールするところからやってみたいと思います。
また、使用するOSはWindows10で、シェルはコマンドプロンプトを使います。
venv\Scripts\activate
でコマンドプロンプトをアクティベートしている前提で話を進めます。
この辺の話がよくわからない人は本シリーズの第1回目をご覧ください。
アプリのインストール
Djangoでプロジェクトとアプリを作成したら、次にやることはアプリのインストールです。
python manage.py startapp
でアプリを作成するだけではDjangoはアプリを認識してくれません。
Djangoに作成したアプリを認識させる作業は手作業で行います。
manage.py
のあるフォルダに移動します。
> dir bbs db.sqlite3 linebbs manage.py
linebbs
というのがプロジェクトの中核フォルダです。
この中に移動して中を見てみます。
> cd linebbs > dir asgi.py # 非同期サーバーゲートウェイインターフェイス settings.py # プロジェクトの設定 urls.py # 最初に解決されるルート wsgi.py # 普通のサーバーゲートウェイインターフェイス __init__.py # このフォルダをモジュールとして認識させるためのファイル __pycache__ # Pythonが自動で作成したキャッシュ
色々入ってますが、この中のsettings.py
を弄ります。
エディターでsettings.py
を開くと、何やらわけのわからない文字列がたくさん並んでいると思います。
肝心のアプリのインストールで参照する情報は↓の部分だけです。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
INSTALLED_APPS
というリストが定義されています。
このリストにはDjangoに認識させたいアプリの名前を入れます。
既に入っているのは、Djangoにデフォルトでインストールされているアプリです。
あとはこのリストを編集して、↓のようにbbs
という文字列を追加します。
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'bbs', # <- ここに作成したアプリの名前を追加 ]
このインストールするアプリの順番は、アプリによっては重要になってきます。
つまり、このリスト内のアプリ名の順番によってアプリの挙動が変わったりします。
特に必要が無ければ、自分のアプリはリストの末尾に追加するようにします。
これでアプリのインストールが完了しました。簡単ですね。
アプリのインストールに問題が無いか以下のコマンドでチェックしてみましょう。
> python manage.py check
python manage.py check
はプロジェクト全体に潜在的な問題がないかチェックするコマンドです。
特に問題が無ければ↓のように表示されます。
System check identified no issues (0 silenced).
たとえばINSTALLED_APPS
に追加したアプリ名が間違っている場合は↓のようなエラーになります。
↓の例ではINSTALLED_APPS
にhige
という存在しないアプリ名を追加しました。
> python manage.py check ... ModuleNotFoundError: No module named 'hige'
hige
というアプリは存在しないので、↑のようにModuleNotFoundError
が画面に出力されます。
このようにpython manage.py check
はプロジェクト、アプリに問題が無いかチェックしてくれます。
なにか作業をやったらこのコマンドでプロジェクトの状態をチェックするクセを作っておくといいでしょう。
DjangoのMVT
アプリのインストールが完了したので、これからアプリの開発に移っていくわけですが、その前にDjangoの持つアーキテクチャの話をさせてください。
DjangoではMVTというアーキテクチャを採用しています。
これは
Model
View
Template
の頭文字(M
, V
, T
)です。
モデル(Model), ビュー(View), テンプレート(Template)はそれぞれ役割を持ち、それらが組み合わさってアプリ全体が動作するようになっています。
モデルはデータベースにデータを保存したり、逆でデータを取ってくる役割を持っています。
これはmodels.py
やmodels\
内にモデルが保存され、ビュー(View)から使用されます。
ビューはルート情報とモデル、テンプレートを連結させる役割を持っています。
これはviews.py
やviews\
内にビューが定義され、ルートから使用されます。
テンプレートはビューから与えられたデータを元にHTMLを描画する役割を持っています。
これはtemplates
以下にHTML
ファイルとして作成されます。
さらにこのアーキテクチャに加えて、ルート情報というのも大事になってきます。
ルート情報というのはurls.py
に定義される情報で、「リクエストされたパスに対してどのビューを呼ぶか?」という情報が記述されています。
DjangoがHTMLを表示するまでに起こること
DjangoはブラウザにHTMLを表示するわけですが、その過程はこうです。
まずDjangoはブラウザのリクエストしたパスに応じて、ルート情報(urls.py
)を参照します。
そしてこのルート情報から、パスに応じたビューを呼び出します。
ビューは必要によってモデルを操作してDBに変更を加えたりデータを取得したりして、テンプレートを描画します。
テンプレートはビューから与えられたデータを元にHTMLを描画します。
Django(正確にはWebサーバー)はその描画されたデータをレスポンスとしてブラウザに返します。
こうしてめでたくユーザーのブラウザには我々が作成したアプリのページが表示されるわけです。
実際にはルート情報の参照前にsettings.py
を参照してアプリの初期化をしたりとか、Djangoは我々に隠れていろいろやってくれてるわけですが、そういった細かいことを考えない場合のおおまかな流れは↑のような流れです。
しかしDjangoがsettings.py
を参照しているという情報は頭の片隅に置いておいてください。
つまり、settings.py
に記述ミスがあった場合、Djangoはゲーゲーとエラーを吐くということです。
ブラウザにレスポンスを返すのはWebサーバー、開発中はDjangoの開発用Webサーバーの仕事ですが、これも特に意識しなくても問題ないようにDjangoは作られています。
しかしプロジェクトをレンタルサーバーにデプロイする時、このWebサーバーというのは途端に顔を出してきますので、これもどこか頭の片隅に置いておくと良いでしょう。
ちなみにこのチュートリアルではレンタルサーバーにプロジェクトをデプロイするところはやりません。
おわりに
今回はアプリをインストールし、MVTについて解説しました。
次回から実際にDjangoのMVTを使ってアプリを開発していきたいと思います。
(^ _ ^) | 来週のDjangoはM・V・Tの三本立て! |