django rest framework - mit detail_route und detail_list

In meinem code habe ich ein viewset für den Benutzer.
Ich will damit nur Lese-Operationen (/users/42 und /users/), die die ReadOnlyModelViewSet einfach gut tut.

Darüber hinaus möchte ich eine /users/register URL, die kann ich POST in, um sich zu registrieren einen neuen Benutzer.

class UserViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    @list_route(methods=['post'])
    def register(request):
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            user = User.objects.create_user(
                username = serializer.init_data['username'],
                password = serializer.init_data['password'],
            )

            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Paar Fragen:

  • Wäre das dies der richtige Weg, das zu tun?

  • Gibt es eine bestimmte Signatur für eine Methode, wenn ich Sie in eine list_route oder die detail_route decorator? denn in der detail_route Beispiele es ist immer die gleiche Signatur für die Methode: method_name(self, request, pk=None):

Dank!

InformationsquelleAutor Ofek Agmon | 2015-05-23

Schreibe einen Kommentar