[Django] urls.pyのパラメータをview.py渡して、パラメータ付きURLを利用する。

前述

  • urlpattersでパラメータ付きURLを使う時は必須
  • 一般的なWebサービスや企業向けシステムではURLパターンを引数として渡すことが多い(というかほぼ100%)
  • サンプルではint型で実装したがChar型やUUID型も同様に記述

ファンクションベースビュー

urls.pyのルーティングは以下とする。

from django.urls import path
from .views import *

urlpatterns = [
    path('<int:id>/', views.index(), name='index'),
]

関数ベースビューを定義する時に引数として指定することでパラメータを受け取ることができる。

def index(request, id):
    HttpResponse "ID is {}" % id

クラスベースビュー

urls.pyのルーティングは以下とする。

from django.urls import path
from .views import *

urlpatterns = [
    path('<int:id>/', IndexView.as_view(), name='index'),
]

上記のようにint型でidを定義した場合、kwargsがDict型でパラメータを渡される、以下のようにパラメータを取得できる。

class IndexView(TemplateView)
    template_name = 'index.html'
    def get(self, request, **kwargs):
        ctx = {
            'id': kwargs['id']
        }
        return self.render_to_response(ctx)
よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください