使用Django API View编写用户的5个API接口

环境准备

请参考

 

urls.py

from . import views
from django.urls import path, re_path, include


urlpatterns = [
    path('user/', views.UserAPIView.as_view()),
    re_path('^user/(?P<pk>\d+)/$', views.UserInfoAPIView.as_view()),
]

views.py

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .serializers import UserSerializers
from .models import User


# Create your views here.

class UserAPIView(APIView):

    def get(self, request):
        '''
        获取所有用户
        :param request:
        :return:
        '''

        # 1、从模型中获取所有用户信息
        queryset = User.objects.all()

        # 2、序列化
        serializers = UserSerializers(instance=queryset, many=True)

        # 3、返回结果
        return Response(serializers.data, status=status.HTTP_200_OK)

    def post(self, request):
        '''
        添加用户
        :param request:
        :return:
        '''
        # 1、接收客户端信息
        data = request.data

        # 2、反序列化(验证数据和保存数据)
        serializers = UserSerializers(data=data)
        serializers.is_valid(raise_exception=True)
        serializers.save()

        # 3、返回结果
        return Response(serializers.data, status=status.HTTP_200_OK)


class UserInfoAPIView(APIView):

    def get(self, request, pk):
        '''
        获取一个学生信息
        :param request:
        :param pk:
        :return:
        '''
        # 根据pk获取模型对象
        try:
            print("pk = {}".format(pk))
            instance = User.objects.get(pk=pk)

        except User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        # 序列化
        serializers = UserSerializers(instance=instance)

        # 3、返回结果
        return Response(serializers.data, status=status.HTTP_200_OK)

    def put(self, request, pk):
        '''
        更新一个学生信息
        :param request:
        :param pk:
        :return:
        '''
        # 根据pk获取模型对象
        try:
            instance = User.objects.get(pk=pk)
        except User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        # 获取客户端提交的信息
        # 更新操作需要传递两个参数
        serializers = UserSerializers(instance=instance, data=request.data)
        serializers.is_valid(raise_exception=True)
        serializers.save()

        # 3、返回结果
        return Response(serializers.data, status=status.HTTP_200_OK)



    def delete(self, request, pk):
        '''
        删除一个学生信息
        :param request:
        :param pk:
        :return:
        '''
        # 根据pk获取模型对象
        try:
            instance = User.objects.get(pk=pk)
        except User.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)

        # 删除
        instance.delete()

        # 3、返回结果
        return Response(status=status.HTTP_204_NO_CONTENT)

使用Postman测试上述接口

1) 新增用户数据

POST 访问http://127.0.0.1:8000/api/user/,发送JSON数据:

{
    "name":"小强",
    "age":20,
    "remark":"dafaww"
}

返回状态码200,数据如下

{
    "id": 5,
    "name": "小强",
    "age": 20,
    "remark": "dafaww",
    "created_date": "2022-03-31T03:29:35.379276Z",
    "creator": "sys",
    "update_date": "2022-03-31T03:29:35.379276Z",
    "updater": "sys"
}

2)修改用户数据

PUT访问http://127.0.0.1:8000/api/user/5/,发送json数据

{
    "name":"小强1",
    "age":20,
    "remark":"dafaww"
}

返回状态码200,数据如下:

{
    "id": 5,
    "name": "小强1",
    "age": 20,
    "remark": "dafaww",
    "created_date": "2022-03-31T03:29:35.379276Z",
    "creator": "sys",
    "update_date": "2022-03-31T03:36:19.218640Z",
    "updater": "sys"
}

3)查询所有用户数据

GET方式访问http://127.0.0.1:8000/api/user/,返回状态码200,数据如下:

[
    {
        "id": 5,
        "name": "小强1",
        "age": 20,
        "remark": "dafaww",
        "created_date": "2022-03-31T03:29:35.379276Z",
        "creator": "sys",
        "update_date": "2022-03-31T03:36:19.218640Z",
        "updater": "sys"
    },
    {
        "id": 6,
        "name": "小红",
        "age": 20,
        "remark": "dafaww",
        "created_date": "2022-03-31T03:38:27.189835Z",
        "creator": "sys",
        "update_date": "2022-03-31T03:38:27.189835Z",
        "updater": "sys"
    }
]

4)查询单一用户数据

GET访问,http://127.0.0.1:8000/api/user/5,返回数据如下:

{
    "id": 5,
    "name": "小强1",
    "age": 20,
    "remark": "dafaww",
    "created_date": "2022-03-31T03:29:35.379276Z",
    "creator": "sys",
    "update_date": "2022-03-31T03:36:19.218640Z",
    "updater": "sys"
}

5)删除用户数据

DELETE方式访问,http://127.0.0.1:8000/api/user/5/,返回204状态码

 

posted @ 2022-03-31 11:50  未来可期_Durant  阅读(477)  评论(0编辑  收藏  举报