Ich entwickle derzeit eine API mit Django.
Aber ich würde gerne eine Ansicht erstellen, die den aktuellen Benutzer mit dem folgenden Endpunkt zurückgibt: /users/current/
.
Zu diesem Zweck habe ich eine Listenansicht erstellt und das Abfrageset nach dem Benutzer gefiltert, der die Anforderung gestellt hat. Das funktioniert, aber das Ergebnis ist eine Liste, kein einzelnes Objekt. In Kombination mit der Paginierung erscheint das Ergebnis im Vergleich zu anderen Endpunkten viel zu kompliziert und inkonsistent.
Ich habe auch versucht, eine Detailansicht zu erstellen und das Abfrageset zu filtern, aber DRF beschwert sich, dass ich kein pk oder slug angegeben habe.
Hast du irgendeine Idee?
quelle
request.user
zurequest.user.is_authenticated()
. Cuzrequest.user
ist,AnonymousUser
wenn Sie nicht eingeloggt sind.Anstatt die volle Leistung von ModelViewSet zu nutzen, können Sie Mixins verwenden. Es gibt RetrieveModelMixin, das zum Abrufen eines einzelnen Objekts verwendet wird, genau wie hier erwähnt - http://www.django-rest-framework.org/api-guide/viewsets/#example_3
class UserViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet): permission_classes = (permissions.IsAuthenticated,) queryset = User.objects.all() serializer_class = UserSerializer def get_object(self): return self.request.user
Wenn Sie auch Ihr Modell aktualisieren müssen, fügen Sie einfach UpdateModelMixin hinzu.
quelle