Как получить ПК в generic.DetailView? - PullRequest
0 голосов
/ 13 апреля 2019

Мой 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 ]

1 голос
/ 13 апреля 2019

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

class ArticleDetailView(generic.DetailView):
    model = Article

    def get_context_data(self, **kwargs):
        pk = self.kwargs['pk']
0 голосов
/ 13 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...