この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:guest
更新日時:2018-12-04 07:53:37

タイトル: 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
        views

                __init__.py
                index.py
                test.py

もともと存在していたviews.pyを削除してviewsディレクトリを作成する。

その中に分割したviewファイル(上記の例では index.py および test.py)と__init__.pyファイルを作成する。

更にアプリケーション名ディレクトリ直下にurls.pyを作成してルーティング処理を記載する。

プロジェクト名ディレクトリ直下のurls.pyを修正する必要もある。

以下、それぞれのファイルの詳細を記述する。

今回のアプリケーション名は「app1」とします。

 

分割したviewファイル

index.py

from django.http import HttpResponse

def page(request):

    return HttpResponse("index view.")

 

test.py

from django.http import HttpResponse

def page(request):

    return HttpResponse("test view.")

 

__init__.py

from .index import page

from .test import page

 

アプリケーション名直下のurls.py

from django.urls import path

from . import views

urlpatterns = [

    path('', views.index.page, name='index'),

    path('test/', views.test.page, name='test'),

]

 

プロジェクト名直下のurls.py

from django.contrib import admin

from django.urls import include, path

urlpatterns = [

    path('app1/', include('app1.urls')),

]
 

 

以上で以下のURLをアクセスすることで異なるviewにアクセスすることができます。

http://127.0.0.1:8000/app1/

http://127.0.0.1:8000/app1/test/