2014-09-25 52 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