django rest frame work 初步使用 >> api_view
Part 1. 请求与响应
在views.py 里面添加新的API
from helloworld.models import Publisher from helloworld.serializers import PublisherSerializer from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework import status @api_view(["GET", "POST"]) def publisher_list(request): """ list all publiseher >> 200 OR create a new publisher (POST) >> 201 :param request: :return: """ if request.method == "GET": queryset = Publisher.objects.all() s = PublisherSerializer(queryset, many=True) return Response(s.data) elif request.method == "POST": # create new_s = PublisherSerializer(data=request.data) if new_s.is_valid(): new_s.save() return Response(new_s.data, status=status.HTTP_201_CREATED) return Response(new_s.errors, status=staut.HTTP_400_BAD_REQUEST) @api_view(["GET", "PUT", "DELETE"]) def publisher_detail(request, pk): """ GET: GET PUT: update DELETE: delete """ try: p = Publisher.objects.get(id=pk) except Publisher.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == "GET": s = PublisherSerializer(p) return Response(s.data) elif request.method == "PUT": s = PublisherSerializer(p, data=request.data) if s.is_valid(): s.save() return Response(s.data) return Response(s.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == "DELETE": p.delete() return Response(status=status.HTTP_204_NO_CONTENT)
from helloworld import views urlpatterns = [ path('admin/', admin.site.urls), path('p/', views.publisher_list), path('p/<int:pk>/', views.publisher_detail) ]
>> 如何调用出 Django rest frame work 自带登陆页面:
在urls.py 里面加入一行
urlpatterns = [ path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), ]
注意认证的问题。