Nel mio codice ho un viewet per l'utente. Voglio consentire solo le operazioni di lettura (/users/42 e /users/) che ReadOnlyModelViewSet funziona correttamente.django rest framework - using detail_route e detail_list
Inoltre, voglio avere un/utenti/registrare URL che posso POST al fine di registrare un nuovo utente.
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)
paio di domande:
Questo sarebbe questo il modo giusto di fare questo?
Esiste una specifica firma per un metodo se lo metto in un list_route o detail_route decoratore? perché negli esempi detail_route la sua sempre la stessa firma per il metodo: nome_metodo (auto, richiesta, pk = None):
grazie!
grazie per la risposta, darò un'occhiata. una domanda: ModelviewSet consente di ottenere GET, POST, PATCH, GET e DELETE. quando si sostituisce il metodo di aggiornamento e si genera un NotAllowed - sarà valido solo per POST e PATCH? o anche per DELETE?Voglio dire copre tutti i metodi oltre a GET e POST per creare? sto solo cercando di assicurarmi che permetta solo i metodi desiderabili –
Hai assolutamente ragione. Ho modificato il codice per usare i mixin corretti in modo esplicito, invece di rattoppare il codice di modifica. –