タイトル: クラスベースビューの作り方とviewの分割
SEOタイトル: djangoのクラスベースビュー作り方とviewの分割方法
以下、デフォルトのディレクトリ構造
プロジェクト名/ |
デフォルトでは上記のように1アプリケーションに対して1viewしか存在しない。
それを以下のように修正する。
プロジェクト名/ アプリケーション名/ templates index.html test.html views index.py test.py |
もともと存在していたviews.pyを削除してviewsディレクトリを作成する。
その中に分割したviewファイル(上記の例では index.py および test.py)を作成する。
更にアプリケーション名ディレクトリ直下にurls.pyを作成してルーティング処理を記載する。
プロジェクト名ディレクトリ直下のurls.pyを修正する必要もある。
また、簡単ではあるが表示用のテンプレートにindex.htmlおよびtest.htmlをtemplatesディレクトリを作成してその配下に配置する。
以下、それぞれのファイルの詳細を記述する。
今回のアプリケーション名は「app1」とします。
分割したviewファイル
index.py
from django.views.generic import TemplateView class IndexView(TemplateView): template_name = "index.html" |
test.py
from django.views.generic import TemplateView class TestView(TemplateView): template_name = "test.html" |
アプリケーション名直下のurls.py
from django.urls import path urlpatterns = [ path('', IndexView.as_view()), path('test/', TestView.as_view()), ] |
プロジェクト名直下のurls.py
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('app1/', include('app1.urls')), ] |
テンプレート
index.html
index |
test.html
test |
以上で以下のURLをアクセスすることで異なるviewにアクセスすることができます。
http://127.0.0.1:8000/app1/
http://127.0.0.1:8000/app1/test/