この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:T
更新日時:2019-05-21 23:13:53

タイトル: クラスベースビュー(主流)の作り方とviewの分割
SEOタイトル: djangoのクラスベースビュー作り方とviewの分割方法

以下、デフォルトのディレクトリ構造

プロジェクト名/
    db.sqlite3
    manage.py
   
プロジェクト名/
        __init__.py
        settings.py
       
urls.py
        wsgi.py
   
アプリケーション名/
        __init__.py
        __pycache__/
        admin.py
        apps.py
        migrations/
        models.py

        views.py

デフォルトでは上記のように1アプリケーションに対して1viewしか存在しない。

それを以下のように修正する。

 プロジェクト名/
    db.sqlite3
    manage.py
   
プロジェクト名/
        __init__.py
        settings.py
       
urls.py
        wsgi.py

    アプリケーション名/
        __init__.py
        __pycache__/
        admin.py
        apps.py
        migrations/
        models.py
       
urls.py

        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
from indicator.views.index import IndexView
from indicator.views.test import TestView

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/