接上文 這里先寫一個GET請求的
1.先在VIEW里定義一個方法 代碼如下:
@api_view(['GET', 'POST']) def book_request(request): if request.method == 'GET': queryset = Book.objects.all() serializer_class = BookSerializer serializer = BookSerializer(queryset) return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response({'key': 'value'}, status=status.HTTP_200_OK)
這里的BookSerializer是上文定義的,注意
serializer = BookSerializer(queryset)
return Response(serializer.data, status=status.HTTP_201_CREATED)
此處2行與上一篇文不一樣,這里如果沒有返回會提示
Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<type 'NoneType'>`
2.url里加上路由規則
url(r'^test/',include('quickstart.urls')),
quickstart.urls:
from django.conf.urls import * from rest_framework.views import * urlpatterns = patterns('quickstart.views', url(r'^$', 'book_request') )
3.啟動
http://localhost:8000/test/
提示錯誤:'QuerySet' object has no attribute 'id'
但是序列化里已經有了這個字段了,后來想起官網API里序列化這一節有寫,果然如果處理的是集合那么應該為
serializer = BookSerializer(queryset,many=True)
這個時候就可以正常了。
其實我看這個rest_framwwork 只是為機器學習相關內容做鋪墊,所以只是略微實現,如果要用請自行補充,博文只記錄易錯點。