前回 #1 VSCでDjango開発入門【環境構築・プロジェクト生成編】の、次のステップです。
公式チュートリアルのPolls アプリケーションをつくるに沿って、まずは単純な文字列をサイトに表示してみます。
このステップでは、Djangoでどのような流れでページが表示されるのかがわかります。
ちなみに、公式チュートリアルはしょっぱなからハテナがいっぱいでした(笑)今回も様々な解説ブログさんのお力を借りて。ありがとうございます。
前提
- コマンドはVisual Studio Code内のターミナルで実行します。
- 基本的にコマンドはWindowsの場合となっています。
アプリケーションを作成する
前回はプロジェクトを作りました。今回は、プロジェクトの中にアプリケーション(機能)を実装していきます。
仮想環境にてmanage.pyと同じ階層にいる状態で、以下を実行します。
python manage.py startapp polls
今回は投票アプリケーションを実装するので、フォルダ名(アプリケーション名)はわかりやすくpollsにします。
srcフォルダ内にpollsフォルダが生成されていると思います。
src
├── mysite
├── polls
├── db.sqlite3
└── manage.py
ここに生成されたファイルをベースに、機能を実装していきます。
ビューの作成
「ビュー」って何!
Djangoの仕組みとして「M(モデル)T(テンプレート)V(ビュー)」というものがあります。
- 「ビュー」でどのページを表示するか指定し
- 「モデル」からデータを引っ張って
- 「ビュー」でデータを編集・整理し(しない場合もある)
- 「テンプレート」でデータを表示する
という流れでDjangoはサイトやアプリを表示します。
つまり簡単に言うと「ビュー」は「どこからどのようにデータを持ってくるか指示するもの」ということです。先ほど生成されたviews.pyがこの役割を担います。また、それをどこで表示するかも指示する必要があります。
「内容」の指示
ということで、どのようにデータを持ってくるのか指示をするために、まずはviews.pyを編集します。
試しに単純な文字を画面に表示してみましょう。pollsフォルダのviews.pyを以下のように編集します。
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World!")
画面に「Hello World!」と表示しますよ~という記述です。これで、表示する内容は設定できました。
「場所」の指示
次に、どこで表示するかを指示します。今回は「/polls/」というディレクトリで表示してみます。
Djangoのページ表示の仕組み
まず、Djangoはユーザーが要求したURLに応じてどのようなページを表示するのかを決定し、ユーザーに返します。
なので、このURLにはこれを返す、といった指示をする必要があります。これらを司るのがurls.pyファイルです。
Djangoではプロジェクト全体のurls.pyと、アプリケーションごとのurls.pyが必要です。
プロジェクト全体のurls.pyはプロジェクトのフォルダに自動生成されていますが、アプリケーションのurls.pyは自分で作成する必要があります。
アプリケーションのurls.pyを作成
ということで、pollsフォルダに新たにurls.pyファイルを作成します。そして、作成したurls.pyに以下のように記述します。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
このファイルが参照されると、先程記述したviewsファイルのindex関数が呼び出されます。
プロジェクト全体のurls.pyから参照
polls/urls.pyは今プロジェクト全体と結びついていません。なので、mysite/urls.pyを書き換えて結びつけます。
16行目あたりから内容を書き換えます。
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls)
]
ユーザーがpolls/ディレクトリを要求するとpollsのurlsで指示した内容をユーザーに返すという流れができました。
実行して確認してみる
実際に開発サーバーでサイトを表示してみます。
ターミナルで以下を実行します。
python manage.py runserver
サーバーが立ったら、http://127.0.0.1:8000/polls/ にアクセスしてみます。pollsディレクトリにアクセスしている点がポイントです。
「Hello World!」と画面に表示されましたか?
プロジェクトとアプリケーションの紐づけ
最後に、今回作成したpollsアプリケーションをプロジェクトに使用することを明記します。次回のデータベースの利用で必要になる設定です。(この項目は次のステップで差し込まれていたのですが、順序的に今回かなと持ったので先に持ってきました。)
mysiteフォルダのsetting.pyを編集します。
33行目あたりのINSTALLED_APPSに値を追加します。
INSTALLED_APPS = [
'polls.apps.PollsConfig', #追加
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
保存して完了です。
さて、今回はDjangoでどのような流れでページが表示されるのかをなんとなく掴むことができました!
以上でこのステップは完了です。
シリーズ一覧
#1 VSCでDjango開発入門【環境構築・プロジェクト生成編】
#2 VSCでDjango開発入門【文字を表示してみる編】(今ココ)
#3 VSCでDjango開発入門【データベースの設定・管理画面編】
#4 VSCでDjango開発入門【ページ制御・テンプレート編】
参考元
Djangoを始めよう! 〜チュートリアル①〜 – Qiita
【図解Python初心者向け】Django基本的な使い方 | CodeCampus
【django】viewsてなに?クラス・関数ビューを解説 | くまのブログ
【Django入門】urls.py(URLConf)の役割と使い方 | 侍エンジニアブログ