使用Django API View編寫使用者的5個API介面
阿新 • • 發佈:2022-03-31
環境準備
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 importResponse 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狀態碼