2014-09-25 51 views
2

我创建了views.py串行和类ExampleUpdateView删除或在我的数据库更新项目:删除/销毁使用Django REST API查看/更新列表

serializer.py:

from rest_framework import serializers 
from example.models import Example 
from django.contrib.auth.models import User 

class ExampleSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Example 

views.py:

class ExampleUpdateView(generics.RetrieveUpdateDestroyAPIView): 
    queryset = Example.objects.all() 
    serializer_class = ExampleSerializer 

urls.py:

from django.conf.urls import patterns, url,include 
from rest_framework.urlpatterns import format_suffix_patterns 
from example import views 

urlpatterns = patterns('', 
    url(r'^example/(?P<pk>[0-9]+)/$', views.ExampleUpdateView.as_view()), 
) 

一切工作正常,我可以使用API​​View更新和删除列表中的项目。 也许这是一个有点愚蠢的问题,但我很好奇如何删除或更新使用网址。例如,“... url ../ example?delete = 5”用于删除具有主键5的项目或“... url ../ example?update = 5 & description =”updated“”以更新项目。是否有可能使用API​​视图?

有人可以帮我吗?

回答

4

REST的原理是遵循HTTP。

如果你做出类似“... url ../ example?delete = 5”那么你会发出GET请求。 GET不用于删除,更新,创建。 如果您发送GET请求,它将检索,如果您发送PUT请求,它将更新。这些动词不是URL的一部分,因此您想要对URL参数进行的操作根本不是REST。

如果可浏览的API不够用,还可以查看一些其他工具。我使用Chrome扩展REST控制台:

https://chrome.google.com/webstore/detail/rest-console/cokgbflfommojglbmbpenpphppikmonn?hl=en

您可以使用curl在Bash发送不同的请求。对于Python有一个非常好的图书馆称为requests

3

如果使用默认的路由器和ModelViewSet你就必须做出使用HTTP方法来更新或删除分别对API的请求。 Yo还可以覆盖默认提供的默认方法list()retrieve(),create(),update()destroy()。请参阅here