1. 程式人生 > 其它 >使用Django API View編寫使用者的5個API介面

使用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狀態碼