如何在generic.DetailView中获取pk?

时间:2019-04-13 13:27:54

标签: django

我的urlpatterns如下:

urlpatterns = [
    ...
    path('article/<int:pk>/', views.ArticleDetailView.as_view(), name='article_detail'),
    ...
]

我想在视图类中获得此pk

class ArticleDetailView(generic.DetailView):
    model = Article

    def get_context_data(self, **kwargs):
        pk = kwargs['pk']

但是,这会引发KeyError:

KeyError at /article/2/
'pk'

2 个答案:

答案 0 :(得分:1)

您可以从pk的{​​{1}}中获得DetailView。所以应该是

self.kwargs

答案 1 :(得分:0)

由于在get_context_data方法中的kwargs参数中搜索值,因此出现此错误。您应该在ArticleDetailView这样的self.kwargs['pk'] kwargs中进行搜索