2017-12-16 5 views
1

Django Restのレコードを削除しようとしています。Django RestのDELETEメソッド

views.py: -

class ItemPartialView(generics.RetrieveUpdateDestroyAPIView): 

    queryset = itemlist.objects.all() 
    serializer_class = ItemlistSerializer 

    def put(self, request, *args, **kwargs): 
     return self.partial_update(request, *args, **kwargs) 

    def destroy(self, request, *args, **kwargs): 
     obj = self.get_object() 
     if obj.survey: 
      return Response(data={'message': "Too late to delete"}, 
         status=status.HTTP_400_BAD_REQUEST) 
     self.perform_destroy(obj) 
     return Response(status=status.HTTP_204_NO_CONTENT) 

urls.py: -

urlpatterns = { 
    url(r'^itemlists/$', ItemView.as_view(), name="create"), 
    url(r'^itemlists/(?P<pk>\d+)/$', ItemPartialUpdateView.as_view(), name="update") 

} 

私はitemlists/1/にDELETEリクエストを送信していたときに今、それはid = 1 エラーでレコードを削除されていないですMethod DELETE not allowed

(作成、READ、UPDATEはDELETEを除いて動作しているので、Cors関連の問題ではないと思います)。

+0

なぜあなたの関数は 'delete()'ではなく 'destroy()'という名前になっていますか? –

+0

delete()は同じ結果になります – codeclue

+0

'delete()'は 'ItemPartialView'クラスのメンバですか?つまり、クラスの下にインデントされた関数ですか?質問では、そうではありません。 –

答えて

0

itemlists/1/の2つのルートが定義されているようです。あなたのコードは、名前から判断する部分更新(PUT/PATCH)サポートのみを持つ最初のコードに当てはまります。

同じクラスのupdateとdestroyの両方で1つのビューを作成する必要があります。それはうまくいくはずです。

+0

試してみてください。 – codeclue

+0

何を試しましたか?コードサンプルを投稿してください。 – masnun

+0

ビューを更新しました。確認してください。 – codeclue