def validate(self, attrs): # 账号是否存在 username = attrs.get('u_username') # 数据库的名 user = AXFUser.objects.filter(u_username=username).first() if user: raise errors.ParamsException({ 'code': 1001, 'msg': '注册账号已存在,请重新输入' }) # 密码是否一致 pwd1 = attrs.get('u_password') pwd2 = attrs.get('u_password2') if pwd1 != pwd2: raise errors.ParamsException({ 'code': 1002, 'msg': '密码不一致,请确认相同的密码' }) # 邮箱(字段验证Emailfield、正则Charfield都要会),判断邮箱是否是否存在 # email = attrs.get('u_email') # if email: # raise errors.ParamsException({'code':1003,'msg':'邮箱已存在已存在,请重新输入'}) # 以上有问题抛异常 return attrs
def validate(self, attrs): # 1.注册账号是否存在 u_username = attrs.get('u_username') if AXFUser.objects.filter(u_username=u_username).first(): raise errors.ParamsException({'code': 1001, 'msg': '用户名已存在'}) # 2.注册密码和确认密码是否一致 u_password = attrs.get('u_password') u_password2 = attrs.get('u_password2') if u_password != u_password2: raise errors.ParamsException({'code': 1002, 'msg': '密码不一致'}) # 3.邮箱正则是否匹配 # 如果以上校验有问题,则抛异常 return attrs
def validate(self, attrs): # 1.判断账号是否存在 username = attrs.get('u_username') password = attrs.get('u_password') user = AXFUser.objects.filter(u_username=username).first() if not user: raise errors.ParamsException({ 'code': 1004, 'msg': '登录账号不存在,请更换账号' }) # 2.判断密码是否正确 if not check_password(password, user.u_password): raise errors.ParamsException({'code': 1005, 'msg': '登录密码错误'}) return attrs
def orders(request): if request.method == "POST": token = request.query_params.get('token') if not token: raise errors.ParamsException({'code': '1008', 'msg': '请先登录'}) user_id = cache.get(token) user = AXFUser.objects.filter(pk=user_id).first() total_price = 0 cart_list = Cart.objects.filter(c_user=user, c_is_select=1).all() if not cart_list: raise errors.ParamsException({'code': 1010, 'msg': '购物车中没有商品'}) # for cart in cart_list: # total_price += cart.c_goods.price * cart.c_goods_num total_price = sum( [cart.c_goods_num * cart.c_goods.price for cart in cart_list]) orderobj = Order.objects.create(o_user=user, o_price=total_price) # for cart in cart_list: # OrderGoods.objects.create(o_order=orderobj,o_goods=cart.c_goods,o_goods_num=cart.c_goods_num) [ OrderGoods.objects.create(o_order=orderobj, o_goods=cart.c_goods, o_goods_num=cart.c_goods_num) for cart in cart_list ] Cart.objects.filter(c_user=user).delete() res = {'code': 200, 'msg': '下单成功,正在配单...'} return Response(res) if request.method == "GET": token = request.query_params.get('token') if not token: raise errors.ParamsException({'code': '1009', 'msg': '请先登录'}) user_id = cache.get(token) user = AXFUser.objects.filter(pk=user_id).first() o_status = request.query_params.get('o_status', '') if o_status == 'not_send': order_list = Order.objects.filter( o_user=user, o_status=2).order_by('-id').all() elif o_status == 'not_pay': order_list = Order.objects.filter( o_user=user, o_status=0).order_by('-id').all() # elif o_status=='not_send': else: order_list = Order.objects.filter( o_user=user).order_by('-id').all() serializer = OrderSerializer(order_list, many=True) res = {'data': serializer.data} return Response(res)
def login(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) result = serializer.is_valid(raise_exception=False) if not result: raise errors.ParamsException({'code': 1006, 'msg': '登录参数有误'}) # 登录用户 token = serializer.login_user(serializer.data) # 登录返回结构: {'code': 200, 'msg': '','data': {token: token值}} res = {'token': token} return Response(res)
def validate(self, attrs): # 1. 注册账号是否存在 username = attrs.get('u_username') user = AXFUser.objects.filter(u_username=username).first() if user: raise errors.ParamsException({ 'code': 1001, 'msg': '注册账号已存在,请更换账号' }) # 2. 注册密码和确认密码是否一致 pwd1 = attrs.get('u_password') pwd2 = attrs.get('u_password2') if pwd1 != pwd2: raise errors.ParamsException({ 'code': 1002, 'msg': '密码不一致,请确认密码是否一致' }) # 3. 邮箱正则是否匹配(使用charField()时候,写正则匹配) # 如果以上校验有问题,则抛异常 return attrs
def authenticate(self, request): # 用户登录认证方法,该方法必须被重构,且返回结果必须为(user, token) # 三元运算法 token = request.query_params.get('token') if request.query_params.get( 'token') else request.data.get('token') user_id = cache.get(token) if user_id: user = AXFUser.objects.filter(pk=user_id).first() return user, token res = {'code': 1007, 'msg': '用户认证失败,无法操作'} raise errors.ParamsException(res)
def register(self, request, *args, **kwargs): # 装饰器添加register路由: /api/user/auth /register/ serializer = self.get_serializer(data=request.data) result = serializer.is_valid(raise_exception=False) if not result: raise errors.ParamsException({'code': 1003, 'msg': '参数校验失败', 'data': serializer.errors}) # 保存用户信息,传的是校验过后的值 user = serializer.register_user(serializer.data) # 返回的结构 res的是data的结果 res = {'user_id': user.id} return Response(res)
def authenticate(self, request): # token= request.query_params.get('token') # if not token: # token=request.data.get("token") token = request.query_params.get('token') if request.query_params.get( 'token') else request.data.get('token') user_id = cache.get(token) if user_id: user = AXFUser.objects.filter(pk=user_id).first() return user, token raise errors.ParamsException({'code': 1007, 'msg': '请先登录'})
def register(self, request): serializer = self.get_serializer(data=request.data) result = serializer.is_valid(raise_exception=False) if not result: raise errors.ParamsException({ 'code': 1003, 'msg': '参数校验失败', 'data': serializer.errors }) user = serializer.save() # user=serializer.user_register(serializer.data) res = {'code': 200, 'msg': "注册成功", 'user_id': user.id} return Response(res)
def validate(self, attrs): # 复杂校验 # 1、注册装好是否存在 username = attrs.get('u_username') user = AXFUser.objects.filter(u_username=username).first() if user: raise errors.ParamsException({ 'code': 1001, 'msg': '注册账号已存在,请更新账号' }) # 2、注册密码和确认密码是否一致 pwd1 = attrs.get('u_password') pwd2 = attrs.get('u_password2') if pwd1 != pwd2: raise errors.ParamsException({ 'code': 1002, 'msg': '密码不一致,请确认密码是否一致' }) # 邮箱正则是否匹配 # 如果以上校验又问体,则抛异常 return attrs
def create(self, validated_data): user = validated_data.get('c_user') goods = validated_data.get('c_goods') cart = Cart.objects.filter(c_user=user, c_goods=goods).first() if cart: if cart.c_goods_num > 1: cart.c_goods_num -= 1 cart.save() else: Cart.objects.filter(c_user=user, c_goods=goods).delete() else: raise errors.ParamsException({'code': 1009, 'msg': '购物车中没有这件商品'}) return user
def login(self, request): serializer = self.get_serializer(data=request.data) result = serializer.is_valid(raise_exception=False) if not result: raise errors.ParamsException({ 'code': 1006, 'msg': '参数校验失败', 'data': serializer.errors }) token = serializer.login_user(serializer.data) res = {'code': 200, 'msg': '登录成功', 'token': token} return Response(res)
def check(request,*args,**kwargs): # 获取前端传递的token,提取数据数据库的token,校验 token = request.query_params.get('token') if request.query_params.get('token') else request.data.get('token') user_id = cache.get(token) if not user_id: res = { 'code': 1007, 'msg': '用户认证失败,无法操作' } raise errors.ParamsException(res) if user_id: user = AXFUser.objects.filter(pk=user_id).first() return user, token return func(request,*args,**kwargs)
def authenticate(self, request): # # 判断哪种请求方式能获取到参数 # token = request.query_params.get('token') # 按get请求获取, # if not token: # 获取不到时 # token = request.data.get('token') # 按POST请求获取 token = request.META.get('HTTP_AUTHORIZATION', None) # 登陆判断 验证jwt try: payload = jwt_encode_handler(token) except: res = {'code': 1007, 'msg': '未登录!'} raise errors.ParamsException(res) user = User.objects.get(phone=payload['phone']) return user, token # 返回的user会设置到request.user上(request.user默认是匿名用户)
def authenticate(self, request): # 判断哪种请求方式能获取到参数 token = request.query_params.get('token') # 按get请求获取, if not token: # 获取不到时 token = request.data.get('token') # 按POST请求获取 # 三元运算写法 # token = request.query_params.get('token') if request.query_params.get('token') else request.data.get('token') # 登陆信息的判断, cache使用 user_id = cache.get(token) if user_id: user = AXFUser.objects.filter(pk=user_id).first() return user, token # 返回的user会设置到request.user上(request.user默认是匿名用户) res = {'code': 1007, 'msg': '请先登陆后再操作'} raise errors.ParamsException(res)
def register(self, request, *args, **kwargs): # /api/user/auth/register/ serializers = self.get_serializer(data=request.data) result = serializers.is_valid(raise_exception=False) if not result: raise errors.ParamsException({ 'code': 1003, 'msg': '参数校验失败', 'data': serializers.errors }) #保存用户信息 user = serializers.register_user(serializers.data) # 返回结构 {'code': 200, 'msg': 请求成功, {'user_id': user_id}} res = {'user_id': user.id} return Response(res)
def register(self, request, *args, **kwargs): # /api/user/auth/register/ POST serializer = self.get_serializer(data=request.data) #校验字段的必填,长度等信息,还校验账号是否存在,且密码相等 result = serializer.is_valid(raise_exception=False) if not result: raise errors.ParamsException({ 'code': 1003, 'msg': '参数校验失败', 'data': serializer.errors }) #保存用户信息 user = serializer.register_user(serializer.data) res = {'user_id': user.id} return Response(res)
def check(a,request, *args, **kwargs): token = request.query_params.get('token') if request.query_params.get('token') else request.data.get('token') if not token: raise errors.ParamsException({'code': 1008,'msg': '请先登录'}) return func(a,request,*args, **kwargs)