APIView的使用
ModelViewSet 是对 APIView的封装
ModelSerializer 是对 Serializer的封装
-
urls.py添加路由
urlpatterns = [
path('apiview/', views.UserInfoViewSet.as_view()),
] -
在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)
-
测试接口
4.1 查询

-
创建

-
更新
![]()
-
限流功能测试
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',
}
} -


浙公网安备 33010602011771号