我正在构建一个公开 REST API 的 Django 应用程序,用户可以通过该 API 查询我的应用程序的模型。我正在按照说明进行操作here http://www.django-rest-framework.org/tutorial/quickstart#testing-our-api
我的路线在 mySites url.py 中如下所示:
router.register(r'myObjects', views.MyObjectsViewSet)
....
url(r'^api/', include(router.urls)),
我的序列化器看起来像这样:
class MyObjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MyObject
fields = ('id', 'name',)
我的视图集如下所示:
class MyObjectsViewSet(viewsets.ModelViewSet):
queryset = MyObjects.objects.all()
serializer_class = MyObjectSerializer
当我点击 API /api/myObjects/ 时,它会列出所有 myObject 模型。
当我点击 API /api/myObjects/60/ 时,它只给我 id == 60 的 myObject。
到目前为止很棒!
但是,我想更改 MyObjectsViewSet() 的逻辑,以便我可以在点击 /api/myObjects/60/ 时操作/更改它返回的内容。所以而不是做MyObjects.objects.all()我想根据 myObject ID 60 做一些更复杂的事情。但是我该怎么做呢?在此视图集中,我怎样才能获取数字 60?它不作为参数传递。但我真的很需要它!
在您的路由器中,再注册一个 url:
router.register(r'myObjects/(?P<id>\d+)', views.MyObjectsViewSet)
在你的视图集中,你可以通过以下方式获取 id:
self.kwargs['id']
Ref: http://www.django-rest-framework.org/api-guide/filtering#filtering-against-the-url http://www.django-rest-framework.org/api-guide/filtering#filtering-against-the-url
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)