APIView的使用

ModelViewSet 是对 APIView的封装

ModelSerializer 是对 Serializer的封装

  1. urls.py添加路由

    urlpatterns = [
       path('apiview/', views.UserInfoViewSet.as_view()),
    ]
  2. 在views.py中添加视图函数

    from user.serializers import UserInfoSerializer
    class UserInfoViewSet(APIView):
       # 查询用户信息
       def get(self, request, *args, **kwargs):
           # 一对多、多对多查询都是一样的方法
           obj = User.objects.all()
           ser = UserInfoSerializer(instance=obj, many=True)  #关联多个数据
           # ser = UserInfoSerializer(instance=obj[0]) #关联一个数据
           return Response(ser.data, status=200)
           
       # 创建用户
       '''创建用户'''
       def post(self, request):
           ser = UserInfoSerializer(data=request.data)
           # 判断提交数据是否合法
           if ser.is_valid():
               ser.save()
               return Response(data=ser.data, status=201)
           return Response(data=ser.errors, status=400)
           
       #更新用户信息    
       def put(self, request):
           pk = request.query_params.get('pk')
           try:
               userinfo = User.objects.get(id = pk)
           except Exception as e:
               return Response(data='用户不存在', status=201)
           # 创建序列化对象,并将要反序列化的数据传递给data构造参数,进而进行验证
           ser = UserInfoSerializer(userinfo, data=request.data)
           if ser.is_valid():
               ser.save()
               return Response(data=ser.data, status=201)
           return Response(data=ser.errors, status=400)
           
           
           
           
           
           
  3. 测试接口

    4.1 查询

  1. 创建

  1. 更新

  2. 限流功能测试

    http://192.168.56.100:8888/user/apiview/
    '''修改syl/settings.py配置限速设置'''
    REST_FRAMEWORK = {
       #3.1 限流策略
       'DEFAULT_THROTTLE_RATES':{
           'user': '3/hour', #认证用户每小时10次
           'anon': '3/day',
      }
    }

     

  3.  

posted @ 2020-09-28 21:13  CefiLing  阅读(127)  评论(0)    收藏  举报