[英]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.