[英]delete object through Django REST API
我正在尝试使用 Django REST API 删除“产品”对象,但不知道如何执行此操作。
序列化器:
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('id', 'product_name', 'measure', 'barcode')
我可以使用此功能创建产品
def create_product(request):
data = request.POST
serializer = ProductSerializer(data=data)
if serializer.is_valid():
serializer.save()
但是不知道怎么删除
没有 serializer.delete() 方法。
您可以使用查询集来做到这一点:
@api_view(["DELETE"])
def product_delete_rest_endpoint(request, product_id):
Product.objects.get(id=product_id).delete()
return Response()
如果您的视图(集)继承自DestroyModelMixin
或继承自它的视图集,例如ModelViewSet
,则支持开箱即用的 http DELETE
。 您可以使用 curl 对其进行测试,例如curl -X DELETE "http://localhost:8000/your-api/products/<product-id>"
。
首先,您应该知道如何使用 django rest_framework 中的 Router 和 ModelViewSet 以及 GenericViewSet 类,而不是 Product 应用程序,假设您有 Customer 应用程序。 你应该从viewsets.ModelViewSet或viewsets.GenericViewSet和mixins.DestroyModelMixin在views.py中继承你的类视图集,就像打击一样
class CustomerViewSet(viewsets.GenericViewSet, mixins.DestroyModelMixin):
或者
class CustomerViewSet(viewsets.ModelViewSet):
并像这样为该视图集定义 serilaizer 类
class CustomerViewSet(viewsets.GenericViewSet, mixins.DestroyModelMixin):
serilaizer_class = CustomerSerializer
那么你应该在你的 appName 文件夹中为所有对 api 的请求定义路由器,你应该在该文件夹中创建 urls.py 文件,如下所示
在 urls.py 中像这样定义路由器和 url 模式
转到应用程序文件夹(app/urls.py)中的 urls.py 并定义如下路径“您应该定义一个路径来引用 customer/urls.py ..我们在上一步中创建了 customer/urls.py ”
OK .. 在浏览器中运行你的项目并输入你的本地主机地址 http://(你的本地主机地址)/api/customer/customers/1/ 和 DELETE 请求(不是 POST、GET 或 PATCH 请求)
这是一些关于路由器和视图集的链接
路由器: https : //www.django-rest-framework.org/api-guide/routers/
模型视图集: https : //www.django-rest-framework.org/api-guide/viewsets/#modelviewset
通用视图集: https ://www.django-rest-framework.org/api-guide/viewsets/#genericviewset
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.