Mam problem z dodawaniem niestandardowego adresu URL do obiektu ModelViewSet w strukturze django-rest. Oto przykład z mojego głównego urls.pyNiestandardowy adres URL django-rest w ModelViewSet
router = routers.DefaultRouter()
router.register(r'post', PostViewSet)
urlpatterns = patterns('',
url(r'^api/', include(router.urls)),
)
Moja modelviewset wygląda
class PostViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Post.objects.all()
serializer_class = PostSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly,)
search_fields = ('created')
def pre_save(self, obj):
obj.user = self.request.user
#
# based on the post type this will decide which serializer to use for the data
def get_serializer_class(self):
#
# default is the Text role serializer
return PostSerializer
że działa świetnie na url jak
/api/post/
szukam dostać zestaw dzień lubię
/api/post/yyyy/mm/dd/
Czy powinienem wystarczy użyć czegoś podobnego
/api/post/?year=&month=&day=
Ta odpowiedź pomogła mi tona! Wiem, że minęło trochę czasu, odkąd je opublikowałeś, ale czy masz jakiś pomysł, czy można zarejestrować te osobno powiązane (czy to właściwe słowo?) Widoki z routerem, aby mogły być widoczne w interfejsie API do przeglądania? – dkhaupt
@dkhaupt Możesz zaznaczyć dodatkowe akcje dla routingu w następujący sposób: http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing - Nie jestem pewien to daje ci to, czego potrzebujesz. W ostateczności może być konieczne zastąpienie szablonu interfejsu API do przeglądania i dodanie dowolnego łącza, którego potrzebujesz. (Sam widok może być renderowany jak każdy inny). –