Djangoのクラスベースビューでurl内のpkなどの変数の値をview内で取得する方法
目標
urls.pyがこうで、
url(r'^hoge/(?P<pk>[0-9]+)/$', HogeView.as_view(), name='hoge'),
views.pyのクラスベースビューでURL内の
class HogeView(ListView): model = Hoge template_name = "hoge.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) propertyinfo = Fuga.objects.get(id=pk) #これいけるのか!??
答え→クラスベースビューの場合、これじゃpkでオブジェクトを探せない・・・
じゃあどうするのかというと・・・
self.kwargs['pk']とすればよいだけ
class HogeView(ListView): model = Hoge template_name = "hoge.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) propertyinfo = Fuga.objects.get(id=self.kwargs['pk'])
self.kwargs['pk']つまり、他にもself.kwargs['user']とかself.kwargs['username']とかとりたいときは、このようにすればOKってこと・・・知ると、「まあそうなんだ」で終わる程度ですが、初っ端調べるのが多少時間かかるので、ここで自分が忘れたときと、Djnagoユーザーの誰かのお役に立てますように・・・
参考にした記事
追記
Django Rest Frameworkでも同じように参照できました^^
お気軽に押していただければ励みになります^^