Я создаю приложение Django, которое предоставляет REST API, с помощью которого пользователи могут запрашивать мои модели приложений. Я следую инструкциям здесь.
Мой маршрут выглядит так в myApp 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',)
My Viewset выглядит так:
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/, я получаю следующую ошибку:
base_name
аргумент не указан и не может автоматически определять имя из вида, так как он не имеет атрибута.model
или.queryset
.
Я понимаю из здесь, что мне нужен параметр base_name на моем маршруте. Но из документов мне непонятно, какова должна быть эта величина параметра base_name. Может кто-нибудь, пожалуйста, скажите мне, какой маршрут должен выглядеть с помощью base_name?