e-commerce 2 part7 Products App
今回の動画
Class Based View を使って見る
公式サイトは、ここら辺りを参照 Built-in class-based generic views | Django documentation | Django
- products/views.py を編集していく
from django.views.generic import DetailView #これはversionによって違うかも。 from django.shortcuts import render from .models import Product # ここは変わらない from .models import Product class ProductDetailView(DetailView): model = Product def product_detail_view_func(request, id): product_instance = Product.objects.get(id=id) template = "products/product_detail.html" context = { "object": product_instance } return render(request, template, context)
- class でDetailViewを継承
- model には、models.py からclassを代入
- detail_viewをrenderするための関数を別途作成しておく。
- この時に渡す引数として、requestは必須、便利なのは、idなどのproduct固有のkeyをurlsから渡せるようにしておくこと。こうすることで、product_instance = Product.objects.get(id=id) などのように、urlのidから、フィルターを掛けて、productsのinstanceを作成することができる。
- template には、template名を入れるが、templates/products/テンプレートファイルというように設定する場合は、上記の例のように、pathをきちんと指定する。
- contextは、templateに渡す引数を設定する