我在views.py中创建了一个序列化程序和类ExampleUpdateView来删除或更新我的数据库中的项目:
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()),
)
一切正常,我可以使用APIView更新和删除列表中的项目。 也许这是一个有点愚蠢的问题,但我很好奇如何使用url删除或更新。例如,“... url ../ example?delete = 5”删除具有主键5的项目或“... url ../ example?update = 5&amp; description =”updated“”以更新项目。是否可以使用API View?
有人可以帮帮我吗?
答案 0 :(得分:6)
REST的原则是遵循HTTP。
如果你制作类似“... url ../ example?delete = 5”的内容,你会发出GET请求。 GET不是用于删除,更新和创建。 如果您发送GET请求,它将检索,如果您发送PUT请求它将更新。动词不是URL的一部分,因此您想要对URL参数执行的操作根本不是REST。
如果可浏览的API不够,您还可以查看其他一些工具。我使用chrome-extension REST控制台:
https://chrome.google.com/webstore/detail/rest-console/cokgbflfommojglbmbpenpphppikmonn?hl=en
您可以在bash中使用curl
发送不同的请求。对于python,有一个名为requests
的非常好的库:
答案 1 :(得分:4)
如果您使用默认路由器和ModelViewSet,则只需使用HTTP方法分别更新或删除API。 Yo还可以覆盖默认提供的默认方法list()
,retrieve()
,create()
,update()
和destroy()
。
有关详细信息,请参阅here。