Как получить pk в generic.Просмотр деталей?

#django

#django

Вопрос:

Мой urlpatterns выглядит так:

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

Я хочу получить это pk в классе view:

 class ArticleDetailView(generic.DetailView):
    model = Article

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

Однако это вызывает ошибку ключа:

 KeyError at /article/2/
'pk'
  

Ответ №1:

Вы можете войти pk DetailView из self.kwargs . Так и должно быть

 class ArticleDetailView(generic.DetailView):
    model = Article

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

Ответ №2:

Вы получаете эту ошибку, потому что вы ищете значение в параметре kwargs в get_context_data методе. Вместо этого вы должны искать в ArticleDetailView kwargs следующим образом self.kwargs['pk']