Ich habe ein Problem beim Hinzufügen einer benutzerdefinierten URL zu einem ModelViewSet in Django-Rest-Framework. Hier ist ein Beispiel meiner Haupt urls.pydjango-rest benutzerdefinierte URL in einem ModelViewSet
router = routers.DefaultRouter()
router.register(r'post', PostViewSet)
urlpatterns = patterns('',
url(r'^api/', include(router.urls)),
)
Mein modelviewset sieht aus wie
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
, die für eine url große Werke wie
/api/post/
Ich suche einen bestimmten Tag zu erhalten wie
/api/post/yyyy/mm/dd/
Oder sollte ich benutzen Sie einfach so etwas wie
/api/post/?year=&month=&day=
Diese Antwort hat mir eine Tonne geholfen! Ich weiß, dass es eine Weile her ist, seit du es gepostet hast, aber hast du eine Idee, wenn es möglich ist, diese separat gebundenen (das ist das richtige Wort?) Ansichten mit dem Router zu registrieren, damit sie in der durchsuchbaren API zu sehen sind? – dkhaupt
@dkhaupt Sie können zusätzliche Aktionen für das Routing markieren, wie hier beschrieben: http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing - ich bin mir nicht sicher das gibt dir, was du brauchst. Letztendlich müssen Sie möglicherweise die Vorlage für die durchsuchbare API überschreiben und den gewünschten Link hinzufügen. (Die Ansicht selbst kann wie jede andere gerendert werden.) –