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)
views.py >> api_view
from helloworld import views

urlpatterns = [
    path('admin/', admin.site.urls),

    path('p/', views.publisher_list),
    path('p/<int:pk>/', views.publisher_detail)

]
urls.py

 

>> 如何调用出 Django rest frame work 自带登陆页面:

在urls.py 里面加入一行

urlpatterns = [
  path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

 

 

注意认证的问题。

 

posted @ 2018-08-21 20:03  小小Guido妹  阅读(646)  评论(0编辑  收藏  举报