Example #1
0
    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
Example #2
0
 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
Example #3
0
 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
Example #4
0
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)
Example #5
0
 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)
Example #6
0
 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
Example #7
0
 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)
Example #8
0
    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)
Example #9
0
    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': '请先登录'})
Example #10
0
 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)
Example #11
0
    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
Example #12
0
 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
Example #13
0
    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)
Example #14
0
 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)
Example #15
0
    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默认是匿名用户)
Example #16
0
    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)
Example #17
0
 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)
Example #18
0
File: views.py Project: HJHua/axf
 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)
Example #19
0
	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)