25

我有一个 URL 模式映射到我的 Django 应用程序中的自定义视图类,如下所示:

url( r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view( ))

问题是,我无法弄清楚如何从视图类中的 URL 模式字符串访问“pk”,以便可以根据其数据库 ID 检索特定模型对象。我用谷歌搜索,查看了 Django 文档,搜索了 Stack Overflow,但我根本找不到满意的答案。

谁能告诉我?

4

3 回答 3

69

在基于类的视图中,URL 中的所有元素都被放入self.args(如果它们是非命名组)或self.kwargs(对于命名组)。因此,对于您的观点,您可以使用self.kwargs['pk'].

于 2012-11-23T12:00:23.083 回答
12

访问视图帖子中的主键 =

Class_name.objects.get(pk=self.kwargs.get('pk'))
于 2016-06-24T10:34:53.877 回答
1

这是一个基于 django restframework 的示例,用于在 url 中使用 pk 检索对象:

视图.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)

网址.py

    url(r'^contact_list/(?P<pk>\d+)/$', ContactListView.as_view())
于 2018-05-23T05:14:07.947 回答