• 使用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状态码

  • 相关阅读:
    省选前模拟
    $SA$后缀数组
    一键运行
    多项式$fft$,$ntt$,$fwt$初步
    插头$DP$初步
    网络流初步
    欧拉路相关
    模板—Hash_map
    HZOJ Function
    HZOJ Tree
  • 原文地址:https://www.cnblogs.com/Durant0420/p/16081047.html
Copyright © 2020-2023  润新知