环境准备
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状态码