Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Django视图类中的URL访问主键_Python_Django_Url Routing - Fatal编程技术网

Python 从Django视图类中的URL访问主键

Python 从Django视图类中的URL访问主键,python,django,url-routing,Python,Django,Url Routing,我有一个URL模式映射到Django应用程序中的自定义视图类,如下所示: url( r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view( )) url(r'^run/(?P\d+/$),views.PerfRunView.as_view()) 问题是,我不知道如何从我的视图类中的URL模式字符串访问“pk”,以便根据其数据库id检索特定的模型对象。我在谷歌上搜索了Django文档,搜索了堆栈溢出,但我根本找不到满意的答案 有人能告诉我

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

url( r'^run/(?P<pk>\d+)/$', views.PerfRunView.as_view( ))
url(r'^run/(?P\d+/$),views.PerfRunView.as_view())
问题是,我不知道如何从我的视图类中的URL模式字符串访问“pk”,以便根据其数据库id检索特定的模型对象。我在谷歌上搜索了Django文档,搜索了堆栈溢出,但我根本找不到满意的答案


有人能告诉我吗?

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

访问视图中的主键 职位=


这是一个基于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)
url.py

    url(r'^contact_list/(?P<pk>\d+)/$', ContactListView.as_view())
url(r'^contact\u list/(?P\d+/$),ContactListView.as\u view())

这有帮助吗?请阅读第二条。@Ankur Gupta感谢您提供的链接,但我仍然不完全清楚。这是self.kwargs的一部分吗?我以为我已经掌握了Django的窍门,直到我进入了基于类的视图。我完全不理解它们。@luke基于类的视图只是一个抽象,我觉得它很烦人,并且坚持使用函数。我认为他们帮不了什么忙。没有必要,你需要使用它。对URL使用简单的函数也很好。我现在已经对它进行了排序。我甚至对Django视图类的工作方式也有了更好的理解。谢谢
    url(r'^contact_list/(?P<pk>\d+)/$', ContactListView.as_view())