1.

djangoのクラスベースビュー作り方とviewの分割方法

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

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

プロジェクト名/
    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 app1.views.index import IndexView
from app1.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')),

]
 

 

■ルートのURLconfを指定します

プロジェクト名/settings.py

ROOT_URLCONF = 'urls'

 

 

テンプレート

index.html

index

 

test.html

test

 

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

http://127.0.0.1:8000/app1/

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

子ページ
子ページはありません
同階層のページ
  1. クラスベースビュー(主流)の作り方とviewの分割
  2. 関数ベースビューの作り方とviewの分割
  3. URLディスパッチャー(ルーティング処理)
  4. GETとPOSTパラメータ受け取り
  5. クラスベースビューでGET/POSTリクエストの受け取り方
  6. クラスベースビューでテンプレートに値を渡す方法
  7. ビューでリダイレクト
  8. cookieの値の設定と取得
  9. HTTPステータスコードの返し方

最近コメントのあったページ

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。