from django.shortcuts import render
from rest_framework.response import Response
from .models import Account
from .serializers import AccountSerializer
# Create your views here.
from rest_framework.generics import GenericAPIView
from rest_framework import status
class AccountListView(GenericAPIView):
# 指定查询集
queryset = Account.objects.all()
# 指定序列列化器器
serializer_class = AccountSerializer
def get(self, request):
"""
GET /Accounts/
:param request: Request类型的对象
:return: JSON """
# 查询数据库
qs = self.get_queryset()
# 实现序列列化
serializer = self.get_serializer(qs, many=True) # 响应序列列化结果
return Response(serializer.data)
def post(self, request):
# 新增时不需要传入修改对象,传入新增数据
account = self.get_serializer(data=request.data)
# 校验
if account.is_valid():
account.save()
return Response(data=account.data,status=status.HTTP_201_CREATED)
else:
ret_data={'errmsg': '参数错误'}
return Response(data=ret_data,status=status.HTTP_404_NOT_FOUND)
class AccountDetailView(GenericAPIView):
# 指定查询集
queryset = Account.objects.all()
# 指定序列列化器器
serializer_class = AccountSerializer
def get(self, request, pk):
"""
GET /account/<pk>/
:param request: Request类型的对象
:param pk: 要访问的数据库记录
:return: JSON """
# 查询数据库:默认根据pk查询数据库单⼀一结果
book = self.get_object()
# 实现序列列化
serializer = self.get_serializer(book) # 响应序列列化结果
return Response(serializer.data)
def put(self, request, pk):
book = self.get_object()
account = self.get_serializer(instance=book, data=request.data)
if not account.is_valid():
return Response(data={'errmsg':'参数有误'}, status=status.HTTP_400_BAD_REQUEST)
account.save()
return Response(data=account.data)
# 部分更新
def patch(self, request, pk):
book = self.get_object()
bs = self.get_serializer(instance=book, data=request.data, partial=True)
if not bs.is_valid():
return Response(data={'errmsg': '参数有误'}, status=status.HTTP_400_BAD_REQUEST)
bs.save()
return Response(data=bs.data)
# 删除单一对象
def delete(self,request, pk):
book = self.get_object()
book.delete()
return Response(data=None, status=status.HTTP_204_NO_CONTENT)```
GenericAPIView views.py
最新推荐文章于 2023-06-06 15:40:53 发布