2016-08-31 7 views
-1

So folgte ich die Quickstart Guide auf der DjangoREST framewok Website und endete mit dem folgenden Code auf:DjangoREST mit Serializer DELETE und UPDATE

serializers.py:

class UserSerializer(serializers.HyperlinkedModelSerializer): 
class Meta: 
    model = User 
    fields = ('url', 'username', 'email', 'groups') 


class GroupSerializer(serializers.HyperlinkedModelSerializer): 
class Meta: 
    model = Group 
    fields = ('url', 'name') 

views.py:

class UserViewSet(viewsets.ModelViewSet): 
""" 
API endpoint that allows users to be viewed or edited. 
""" 
queryset = User.objects.all().order_by('-date_joined') 
serializer_class = UserSerializer 

class GroupViewSet(viewsets.ModelViewSet): 
""" 
API endpoint that allows groups to be viewed or edited. 
""" 
queryset = Group.objects.all() 
serializer_class = GroupSerializer 

urls.py:

router = routers.DefaultRouter() 
router.register(r'users', views.UserViewSet) 
router.register(r'groups', views.GroupViewSet) 
router.register(r'rooms', views.RoomViewSet) 
router.register(r'devices', views.DeviceViewSet) 
router.register(r'deviceTypes', views.DeviceTypeViewSet) 

# Wire up our API using automatic URL routing. 
# Additionally, we include login URLs for the browsable API. 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) 
] 

Das ist aber alles funktioniert gut, aber ich kann nicht herausfinden, wie ein Benutzer oder eine Gruppe zu löschen oder zu aktualisieren scheint, dass ich nur von Benutzern und Gruppen und anzeigen hinzufügen können. Also meine Frage ist: Wie kann ich diesen Code ändern, um es zu ermöglichen, Benutzer und Gruppen zu löschen/zu aktualisieren?

+0

bitte Ihren Code einrücken richtig –

Antwort

1

Der Code ist in Ordnung, man muss nur PUT und DELETE Daten Methoden zur Aktualisierung verwenden und löschen bzw. (statt GET/POST)

Sie können für einen ModelViewSet aus dem Codebeispiel sehen in der docs

class SnippetViewSet(viewsets.ModelViewSet): 
    """ 
    This viewset automatically provides `list`, `create`, `retrieve`, 
    `update` and `destroy` actions. 

und die Dokumentation für ModelViewSet

die Aktionen pro Von der ModelViewSet-Klasse werden .list(), .retrieve(), .create(), .update(), .partial_update() und .destroy() angegeben.

+1

Danke Sayse! Das ist tatsächlich der Trick. – Robert

+0

@Robert - Keine Sorge, viel Spaß – Sayse

0

Sie müssen eine HTTP-Anforderung mit der Methode DELETE ohne Header und Text ausführen. Beispiel

curl -X DELETE http://127.0.0.1:8000/api/v1/persona/4/ 

nur für Kontrast, wird die Entwicklung der nächsten ROTATION ausführen (beachten Sie den Header "Content-Type"):

curl -X POST http://127.0.0.1:8000/api/v1/persona/ -H 'content-type: application/json' -d '{ 
"nombre": "Rick", 
"apellidos": "Isenhower", 
"edad": "38", 
telefono": "8547458858", 
"domicilio": "St Utha, Colorado"}' 

Prost C:

Verwandte Themen