WEBTODESIGN

#2 VSCでDjango開発入門【文字を表示してみる編】

前回 #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)の役割と使い方 | 侍エンジニアブログ