博客五部曲之三 - 博客RESTful
2084 浏览 5 years, 9 months
3 API Model & ListAPIView
版权声明: 转载请注明出处 http://www.codingsoho.com/列表视图
JSON格式在web应用和IOS,Android中都广泛的使用,这将会是我们的标准格式
我们同样会实现CRUD功能 ,首先在posts下面创建api包,所有API相关的实现都会在里面实现。
参考手册 http://www.django-rest-framework.org/api-guide/generic-views/#listapiview
视图
我们新建一个目录api来处理相关的功能。创建posts.api.views.py去处理我们的视图,我们首先处理ListView,ListAPIView有很多实现参数,包括queryset,serializer_class及permission_class来实现序列号,权限控制等功能,我们会一一实现。
ListAPIView是class based view,在前面的博客中,我们主要用的是function based view。
添加视图处理函数,首先设置参数queryset,这个是要显示的实例集合,后面我们可以通过get_queryset来更新它。
from rest_framework.generics import ListAPIView
from posts.models import Post
class PostListAPIView(ListAPIView):
queryset = Post.objects.all()
创建api的URL文件posts.api.urls.py,对于class based view,我们调用as_view函数来做相应的处理。
from .views import (
PostListAPIView,
)
urlpatterns = [
url(r'^$', PostListAPIView.as_view(), name="list"),
]
在根URL里,添加这个URL
urlpatterns = [
url(r'^api/posts/', include("posts.api.urls",namespace="posts-api")),
]
访问 http://127.0.0.1:8000/api/posts/, 有下面报错,这个将在下一节解决
'PostListAPIView' should either include a `serializer_class` attribute, or override the `get_serializer_class()` method