使用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状态码
知道、想到、做到、得到
分类:
测试开发
, Django restframework
标签:
Django restframework
, 测试开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)