为了使该Django API正常工作,我需要在路由中使用什么base_name参数? [英] What base_name parameter do I need in my route to make this Django API work?
问题描述
我正在构建一个Django应用程序,该应用程序公开了REST API,用户可以通过该API查询我的应用程序的模型。我正在 此处 上进行操作。
I am building a Django application that exposes a REST API by which users can query my application's models. I'm following the instructions here.
我的路线在myApp的url.py中如下所示:
My Route looks like this in myApp's url.py:
from rest_framework import routers
router = routers.DefaultRouter() router.register(r'myObjects/(?P<id>\d+)/?$', views.MyObjectsViewSet)
url(r'^api/', include(router.urls)),
我的模型如下:
class MyObject(models.Model):
name = models.TextField()
我的序列化器如下:
class MyObjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MyObject
fields = ('id', 'name',)
我的视图集如下:
class MyObjectsViewSet(viewsets.ViewSet):
def retrieve(self,request,pk=None):
queryset = MyObjects.objects.get(pk=pk).customMyObjectList()
if not queryset:
return Response(status=status.HTTP_400_BAD_REQUEST)
else:
serializer = MyObjectSerializer(queryset)
return Response(serializer.data,status=status.HTTP_200_OK)
当我打/ api / myObjects / 60 /时,出现以下错误:
When I hit /api/myObjects/60/ I get the following error:
base_name
参数未指定,并且由于没有.model
或<$ c $而无法从视图集中自动确定名称c> .queryset 属性。
base_name
argument not specified, and could not automatically determine the name from the viewset, as it does not have a.model
or.queryset
attribute.
我从 此处 ,我在路由上需要一个base_name参数。但是从文档中,我不清楚该base_name参数的值应该是什么。有人可以告诉我使用base_name的路由应该是什么样吗?
I understand from here that I need a base_name parameter on my route. But from the docs, it is unclear to me what that value of that base_name parameter should be. Can someone please tell me what the route should look like with the base_name?
推荐答案
请尝试在urls.py中执行此操作。第三个参数人可以是您想要的任何东西。
Try doing this in your urls.py. The third parameter 'Person' can be anything you want.
router.register(r'person/food', views.PersonViewSet, 'Person')
这篇关于为了使该Django API正常工作,我需要在路由中使用什么base_name参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!