Я использую структуру Django REST, и у меня есть представление с дополнительным методом маршрута списка. Как я могу получить этот URL метода, включенного в корневую страницу API?
Здесь приведена упрощенная версия моего представления:
class BookViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
permission_classes = (permissions.IsAuthenticated, )
@list_route(methods=['get'])
def featured(self, request):
queryset = self.filter_queryset(self.get_queryset()).filter(featured=True)
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
Я регистрирую представление, установленное в urls.py
:
router = DefaultRouter()
router.register('books', BookViewSet)
urlpatterns = patterns(
url(r'^api/', include(router.urls), name='api_home'),
#...
)
URL для books/featured
маршрутизируется правильно, но когда я перехожу к http://localhost:8000/api
, я вижу только это:
HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, HEAD, OPTIONS
{
"books": "http://localhost:8000/api/books/"
}
Как я могу добавить запись для чего-то вроде этого?
"book-featured-list": "http://localhost:8000/api/books/featured"