from django.core.paginator import Paginator
from django.db.models import F, Q
from rest_framework.views import APIView
from rest_framework.response import Response
from .sers import *
from django.core.paginator import Paginator
class LoginView(APIView):
def post(self, request):
username = request.data.get(‘username’)
password = request.data.get(‘password’)
user = User.objects.filter(username=username).first()
if user and user.password == password:
return Response({'msg': 'OK', 'code': 200, 'uid': user.id})
else:
return Response({'msg': '用户名密码错误', 'code': 400})
def get(self, request):
id = request.query_params.get('id')
user_obj = User.objects.get(pk=id)
user_ser = UserSer(user_obj)
return Response({'msg': 'OK', 'code': 200, 'data': user_ser.data})
class GoodsView(APIView):
def get(self,request):
num = int(request.GET.get(‘num’,1))
query = Goods.objects.all()
pan = Paginator(query,1)
query = pan.get_page(num)
ser= GoodsSer(query,many=True)
return Response({‘msg’: ‘OK’, ‘code’: 200,‘data’:ser.data,
‘num_list’:[x for x in pan.page_range]})
class GoodsInfoView(APIView):
def get(self,request):
id = request.query_params.get(‘id’)
goods_obj = Goods.objects.get(id=id)
goods_ser = GoodsSer(goods_obj)
return Response({‘msg’: ‘OK’, ‘code’: 200, ‘data’: goods_ser.data})
class CarView(APIView):
def post(self,request):
uid = request.data.get(‘user’)
goods = request.data.get(‘goods’)
money = request.data.get(‘money’)
ser = CartSer(data=request.data)
if ser.is_valid():
ser.save()
User.objects.filter(pk=uid).update(score=float(money)/10)
Goods.objects.filter(pk=goods).update(num=F(‘num’)+1)
return Response({‘msg’:‘购买成功’})
else:
print(ser.errors)
return Response({‘msg’:‘购买失败’})
class VipUpView(APIView):
def put(self,request):
id = request.GET.get(‘uid’)
print(id)
User.objects.filter(pk=id).update(vip=1)
return Response({‘msg’: ‘升级成功’, ‘code’: 200})
class SerchGoodsView(APIView):
def get(self,request):
queryset = Goods.objects.filter(num__gt=3)
ser = GoodsSer(queryset, many=True)
return Response({‘msg’: ‘OK’, ‘code’: 200, ‘data’: ser.data})