使用AJAX调用删除Django模型

时间:2018-06-10 18:34:14

标签: django django-models django-rest-framework django-admin

我正在编写一个使用Django Rest Framework API的照相馆应用程序。

我使用AJAX(特别是axios)用所述API填充Django模型(图像和描述)中的数据。

问题是 - 是不是可以POST数据,而是从我的前端应用程序中删除它,我的意思是模型实例 - 就像它在管理界面中完成,甚至删除所有模型实例。

1 个答案:

答案 0 :(得分:3)

是的,您也可以添加 .delete(..) 实施:

class SomeModelDetail(APIView):

    def get_object(self, pk):
        try:
            return SomeModel.objects.get(pk=pk)
        except SomeModel.DoesNotExist:
            raise Http404

    # ...

    def delete(self, request, pk, format=None):
        self.get_object(pk).delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

HTTP_204_NO_CONTENT响应因此是一个状态代码,有时用于表示现在已删除相应的对象。

如果我们然后将此视图添加到URL:

from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from app import views

urlpatterns = [
    url(r'^somemodel/(?P<pk>[0-9]+)/$', views.SomeModelDetail.as_view()),
]

format_suffix_patterns(urlpatterns)

然后我们可以进行DELETE AJAX调用:

# JavaScript (Ajax request)

$.ajax({
    url: 'http://localhost:8080/someapp/somemodel/123/',
    type: 'DELETE',
    data: {},
    contentType:'application/json',
    dataType: 'text',
    error: function(result){},
    success: function(result) {}
});

因此,我们针对特定的DELETE实例(此处使用主键somemodel执行123方法请求,尽管您必须使用感性的方法填充自己的实例{。}}。< / p>