我有一个URL模式映射到我的Django App中的自定义视图类,如下所示:
url( r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view( ))
问题是,我无法弄清楚如何从视图类中的URL模式字符串访问'pk',以便我可以根据其数据库ID检索特定的模型对象。我用Google搜索,查看了Django文档,搜索了Stack Overflow,我找不到满意的答案。
有人可以告诉我吗?
答案 0 :(得分:51)
在基于类的视图中,URL中的所有元素都放在self.args
(如果它们是非命名组)或self.kwargs
(用于命名组)中。因此,对于您的观点,您可以使用self.kwargs['pk']
。
答案 1 :(得分:3)
访问视图中的主键 post =
Class_name.objects.get(pk=self.kwargs.get('pk'))
答案 2 :(得分:0)
这是一个基于django restframework的示例,用于在url中使用pk检索对象:
views.py
class ContactListView(generics.ListAPIView):
queryset = Profile.objects.all()
serializer_class = UserContactListSerializer
def get(self, request, pk, *args, **kwargs):
contacts = Profile.objects.get(pk=pk)
serializer = UserContactListSerializer(contacts)
return Response(serializer.data)
urls.py
url(r'^contact_list/(?P<pk>\d+)/$', ContactListView.as_view())