Ich habe folgendes Viewset:Django übriges Rahmen Viewset Berechtigungen „erstellen“ ohne „Liste“
class ActivityViewSet(viewsets.ModelViewSet):
queryset = Activity.objects.all()
serializer_class = ActivitySerializer
def get_permissions(self):
if self.action in ['update','partial_update','destroy','list']:
self.permission_classes = [permissions.IsAdminUser,]
elif self.action in ['create']:
self.permission_classes = [permissions.IsAuthenticated,]
else :
self.permission_classes = [permissions.AllowAny,]
return super(self.__class__, self).get_permissions()
Wie man sieht, Im Versuch, die ‚create‘ Methode zu ermöglichen, ohne dass die ‚Liste‘, für einen authentifizierten Benutzer (der kein Administrator ist). Seltsamerweise führt dieses Viewset zu keiner Erstellung oder Liste für den authentifizierten Benutzer. Iv'e geprüft, nur um rull aus, den folgenden Code:
class RouteOrderingDetail(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
mixins.UpdateModelMixin,
viewsets.GenericViewSet):
queryset = RouteOrdering.objects.all()
serializer_class = RouteOrderingSerializer
Diese für eine Ansicht erlaubt hat, in der es schaffen, aber nicht Liste (aber es ist nicht geeignet für mich, da brauche ich . avilable die Liste Option
Hoffnung das Problem ist klar Jede Hilfe wird appriciated
prüfen, wie Sie benutzerdefinierte Berechtigungen erstellen http://www.django-rest-framework.org/api-guide/permissions/# custom-permissions –
Ich habe benutzerdefinierte Berechtigungen, wie Sie deutlich im Code sehen können. Das Problem ist darüber hinaus. – idik
Sie haben keine benutzerdefinierte Berechtigungsklasse erstellt. Sie haben die 'get_permissions'-Methode in Ihrem Viewset bearbeitet. Mit einer benutzerdefinierten Berechtigungsklasse können Sie Berechtigungen abhängig von 'request.method' zurückgeben. –