最終更新日:2020-09-14
ビューは,リクエストオブジェクトを受け取って,レスポンスオブジェクトを返す役割を担います.では,http://localhost:8000/touch/
にアクセスしたときに,touch
アプリケーションのトップページが表示されるようにしてみましょう.touch/views.py
に以下のコードを記述してください.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from django.shortcuts import render from django.http import HttpResponse from django.views.generic import View class IndexView(View): """ インデックスビュー """ def get(self, request, *args, **kwargs): # テンプレートのレンダリング return render(request, 'touch/index.html') index = IndexView.as_view() |
IndexView
は,インデックスビューに対応するクラスベースビューです.View
クラスを継承して定義します.クラスベースビューについては,文献[1][2]を参照してください.
このビューを呼ぶために,URLとビューとを対応付けておく必要があります.そのためにはURLconf
が必要になります.touch/
にurls.py
を新規作成します.このtouch/urls.py
に以下のコードを記述してください.
1 2 3 4 5 6 7 8 |
from django.urls import path from . import views app_name = 'touch' urlpatterns = [ # ex: touch/ path('', views.index, name='index'), ] |
さらに,このtouch/urls.py
の記述を反映させるために,次のように,webgame/urls.py
にdjango.urls.include
のimport
を追加し,urlpatterns
リストに'touch.urls'
に対応したパスを追加してください.
1 2 3 4 5 6 7 |
from django.contrib import admin from django.urls import path, include # includeを追加 urlpatterns = [ path('admin/', admin.site.urls), path('touch/', include('touch.urls')), # 追加 ] |
ブラウザで下記のURLにアクセスしてみましょう.
http://localhost:8000/touch/
「Touch, touch, touch!へようこそ!」と表示されました.ページのタイトルは「Touch, touch, touch!」となっています.このページは,リスト1の12行目に記述されているように,IndexView
クラスのget()
メソッドにおいて,テンプレートがレンダリングされることで表示されます.では,URLにアクセスされた後,どのような流れでこのこのget()
メソッドが表示されるのかについては,次回で説明します.
ビューの作成の詳細については,文献[3][4]を参照してください.
参考
- クラスベースビュー | Django ドキュメント | Django
- 現場で使える Django の教科書《基礎編》
# 5.2 ビュー関数の書き方(関数ベース vs クラスベース)
- はじめての Django アプリ作成、その 1 | Django ドキュメント | Django # はじめてのビュー作成
- 現場で使える Django の教科書《基礎編》
# 第5章 ビュー