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)
刪除的數據不存在:
刪除數據成功: