Django Rest Framework - 实例PartyDemo 之 增删改查

1.配置URL

使用上篇的Partymodel和PartySeralization

在testrestapi下新建 urls.py

testresrapi/urls.py

urlpatterns = []

配置url :

mysite/urls.py

别忘记在 setting.py下配置 testrestapi 此 app ; url 配置如下 :

urlpatterns = [
...
url(r'^api/', include('testrestapi.urls')),
...
]

2.实现查与增

需求

  • 增加一条Party 信息
  • 查询全部Party 信息

实现view

testrestapi/views.py

实现如下 (使用mixins简单实现):

class PartyList(mixins.ListModelMixin,
                mixins.CreateModelMixin,
                generics.GenericAPIView):
    queryset = Party.objects.all()
    serializer_class = PartySerializer

    def get(self, request, *args, **kwargs):
        return self.list(request, args, kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

当然也可以这样实现 (使用generics更简单):

class PartyList(generics.ListCreateAPIView):
    queryset = Party.objects.all()
    serializer_class = PartySerializer

上面两种选择其一即可;

配置url

testrestapi/urls.py

urlpatterns = [
    url(r'^list/', PartyList.as_view()),
    ]

访问
api是我们自己配置的url , 也可以配置为自己的 app 名称或其他。

主机Ip:端口/ api /list

查询操作 :

Django Rest Framework - 实例PartyDemo 之 增删改查_第1张图片

提交操作:两种方式 表单提交和json提交

Django Rest Framework - 实例PartyDemo 之 增删改查_第2张图片

解释: 查询和增操作对应的是一个URL,但区分的是不同的请求方式;增:post实现;查:get实现。


3.实现改与删

需求

  • 删除一条Party数据
  • 修改一条Party数据

view实现

使用mixin实现

class PartyDetail(mixins.RetrieveModelMixin,
                  mixins.UpdateModelMixin,
                  mixins.DestroyModelMixin,
                  generics.GenericAPIView):
    queryset = Party.objects.all()
    serializer_class = PartySerializer

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

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

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)

使用generics实现

class PartyDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Party.objects.all()
    serializer_class = PartySerializer

当然,上面两者其一即可。

url配置

urlpatterns = [
    url(r'^list/', PartyList.as_view()),
    url(r'^detail/(?P[0-9]+)$', PartyDetail.as_view()),

访问 : IP : 端口 /api /detail/pk


(1)查看详情 : GET

Django Rest Framework - 实例PartyDemo 之 增删改查_第3张图片


(2)修改内容 : PUT

Django Rest Framework - 实例PartyDemo 之 增删改查_第4张图片


(3)删除内容 : delete

这里写图片描述


操作方式,在view中可以控制,比如删除,我们常常使用的是伪删除


4.总结

使用mixin和generics 可以快速的使用我们的api , 但可能不够灵活,所以我们也可以自己写请求的返回数据,比如官方给的例子:Writing regular Django views using our Serializer 。

下篇文章实现 其 API文档的配置和使用

参考 : http://www.django-rest-framework.org/

源码地址 : https://github.com/LABELNET/django-mysite-frist

你可能感兴趣的:(django,rest,framework,python)