使用上篇的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')),
...
]
需求
实现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
查询操作 :
提交操作:两种方式 表单提交和json提交
解释: 查询和增操作对应的是一个URL,但区分的是不同的请求方式;增:post实现;查:get实现。
需求
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
(2)修改内容 : PUT
(3)删除内容 : delete
操作方式,在view中可以控制,比如删除,我们常常使用的是伪删除
使用mixin和generics 可以快速的使用我们的api , 但可能不够灵活,所以我们也可以自己写请求的返回数据,比如官方给的例子:Writing regular Django views using our Serializer 。
下篇文章实现 其 API文档的配置和使用
参考 : http://www.django-rest-framework.org/
源码地址 : https://github.com/LABELNET/django-mysite-frist