Django REST framework之API接口开发

1. 获取数据的接口

获取所有的字段:

from rest_framework import views, serializers, response
from .. import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = "__all__"

class User(views.APIView):
    def get(self, request):
        qs = models.User.objects.all()
        serializer = UserSerializer(qs, many=True)
        return response.Response({
            'status': 0,
            'data': serializer.data
        })

在这里插入图片描述
获取部分字段:

from rest_framework import views, serializers, response
from .. import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = ('id', 'name') # 只需要修改这里

class User(views.APIView):
    def get(self, request):
        qs = models.User.objects.all()
        serializer = UserSerializer(qs, many=True)
        return response.Response({
            'status': 0,
            'data': serializer.data
        })

在这里插入图片描述
获取单条数据:

from rest_framework import views, serializers, response
from .. import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = ('id', 'name')

class User(views.APIView):
    def get(self, request):
        qs = models.User.objects.all()
        serializer = UserSerializer(qs.first(), many=False)  # 默认是False,修改这里
        return response.Response({
            'status': 0,
            'data': serializer.data
        })

在这里插入图片描述

2. 添加数据的接口

添加数据:

from rest_framework import views, serializers, response
from .. import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = "__all__"

class User(views.APIView):
    def post(self, request):
        serializer = UserSerializer(data=request.data)
        result = {'status': 0, 'data': None}
        if serializer.is_valid():
            instance = serializer.save()
            result['data'] = instance.pk
            return response.Response(result)
        else:
        	result['status'] = 1
            result['data'] = serializer.errors
        return result

在这里插入图片描述

3. 更新数据的接口

更新数据的接口:

from rest_framework import views, serializers, response
from .. import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = "__all__"
        
class UserDetail(views.APIView):
    def put(self, request, pk):
        instance = models.User.objects.filter(pk=pk).first()
        result = {'status': 0, 'data': None}
        if not instance:
            result['status'] = 1
            result['data'] = '数据不存在!'
        else:
            # 如果没有传入instance,默认是None,表示添加数据而不是更新数据
            serializer = UserSerializer(instance=instance, data=request.data)
            if serializer.is_valid():
                instance = serializer.save()
                result['data'] = instance.pk
            else:
                result['status'] = 1
                result['data'] = serializer.errors
        return response.Response(result)

没有查询到要更新的数据:
在这里插入图片描述
更新数据成功:
在这里插入图片描述

4. 删除数据的接口

删除数据的接口:

from rest_framework import views, serializers, response
from .. import models

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = "__all__"
        
class UserDetail(views.APIView):
    def delete(self, request, pk):
        instance = models.User.objects.filter(pk=pk)
        result = {'status': 0, 'data': None}
        if not instance:
            result['status'] = 1
            result['data'] = '数据不存在,无法删除!'
        else:
            instance.delete()
            result['data'] = []
        return response.Response(result)

删除的数据不存在:
在这里插入图片描述
删除数据成功:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章