Example #1
0
    def post(self, request):

        #如何取数据
        json_str = request.body
        json_obj = json.loads(json_str)
        username = json_obj['username']
        email = json_obj['email']
        phone = json_obj['phone']
        password_1 = json_obj['password_1']
        password_2 = json_obj['password_2']
        sms_num = json_obj['sms_num']

        #校验验证码
        old_code = cache.get('sms_%s' % (phone))
        if not old_code:
            result = {'code': 10113, 'error': 'code is wrong!'}
            return JsonResponse(result)

        if int(sms_num) != old_code:
            result = {'code': 10114, 'error': 'code is wrong!'}
            return JsonResponse(result)

        #TODO 参数检查
        if len(username) > 11:
            result = {'code': 10100, 'error': 'The username is wrong~'}
            return JsonResponse(result)

        #检查用户名是否可用
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 10101, 'error': 'The username is already exist~'}
            return JsonResponse(result)
        #密码处理
        if password_1 != password_2:
            result = {'code': 10102, 'error': 'The password is error~'}
            return JsonResponse(result)
        p_m = hashlib.md5()
        p_m.update(password_1.encode())
        password_m = p_m.hexdigest()
        #插入数据
        try:
            user = UserProfile.objects.create(username=username,
                                              password=password_m,
                                              email=email,
                                              phone=phone,
                                              nickname=username)
        except Exception as e:
            print('create error is %s' % (e))
            result = {'code': 10103, 'error': 'The username is already exist~'}
            return JsonResponse(result)

        #签发jwt
        token = make_token(username)
        return JsonResponse({
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        })
Example #2
0
    def post(self, request):
        json_str = request.body
        print(json_str)
        json_obj = json.loads(json_str)
        print(json_obj)
        print(type(json_obj))
        if not json_str:
            result = {'code': 10100, 'error': 'no data'}
            return JsonResponse(result)

        username = json_obj['username']
        password_1 = json_obj['password_1']
        password_2 = json_obj['password_2']
        email = json_obj['email']
        phone = json_obj['phone']
        sms_num = json_obj['sms_num']
        # 校验验证码
        code_cache_key = 'sms_%s' % phone
        old_code = cache.get(code_cache_key)
        if old_code != int(sms_num):
            return JsonResponse({'code': 10111, 'error': 'The code is error'})
        # 校验用户名是否可用
        old_users = UserProfile.objects.filter(username=username)
        if old_users:
            result = {
                'code': 10102,
                'error': 'The username is already existed'
            }
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 10101, 'error': 'The password is not same'}
            return JsonResponse(result)
        # 密码做mds
        m = hashlib.md5()
        m.update(password_1.encode())
        # 创建用户 - UserProfile插入数据
        try:
            user = UserProfile.objects.create(username=username,
                                              nickname=username,
                                              password=m.hexdigest(),
                                              email=email)
        except Exception as e:
            print('create user error is %s' % e)
            result = {
                'code': 10103,
                'error': 'The username is already existed'
            }
            return JsonResponse(result)
        # 签发token
        token = make_token(username)
        return JsonResponse({
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        })
Example #3
0
    def post(self, request):
        json_str = request.body
        json_obj = json.loads(json_str)
        username = json_obj['username']
        email = json_obj['email']
        phone = json_obj['phone']
        password_1 = json_obj['password_1']
        password_2 = json_obj['password_2']
        sms_num = json_obj['sms_num']
        # 校验验证码
        cache_key = 'sms_%s' % (phone)
        old_code = cache.get(cache_key)
        # 验证码过期
        if not old_code:
            result = {'code': 10113, 'error': 'code is wrong'}
            return JsonResponse(result)
        # 比较
        if int(sms_num) != old_code:
            result = {'code': 10114, 'error': 'code is wrong2'}
            return JsonResponse(result)

        if len(username) > 11:
            result = {'code': 10100, 'error': 'username is too long'}
            return JsonResponse(result)
        # 用户名是否可用
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 10101, 'error': 'username is exist'}
            return JsonResponse(result)
        # 处理密码
        if password_1 != password_2:
            result = {'code': 10102, 'error': 'password is error'}
            return JsonResponse(result)
        md5 = hashlib.md5()
        md5.update(password_1.encode())
        password_m = md5.hexdigest()
        # 插入数据
        try:
            user = UserProfile.objects.create(username=username,
                                              password=password_m,
                                              email=email,
                                              phone=phone,
                                              nickname=username)
        except Exception as e:
            print('create error is %s' % e)
            result = {'code': 10101, 'error': 'username is exist'}
            return JsonResponse(result)

        # 签发jwt
        token = make_token(username)
        return JsonResponse({
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        })
Example #4
0
    def post(self,request):
        """
        1. 获取浏览器前端传递的数据
        2. 验证前端传递的数据。
        3. 判断用户是不是在我们数据库中存在。
        4. 判断用户密码是否合法。对密码进行处理
        5. 创建用户。生成token.返回给前端。
        """
        json_obj = request.body
        if not json_obj:
            return JsonResponse({'code':201,'error':'no content!'})
        json_dict = json.loads(json_obj)

        # 验证用户名
        username = json_dict.get('username',None)
        if not username:
            return JsonResponse({'code':202,'error':'no username'})
        # 获取邮箱。获取密码
        email = json_dict.get('email',None)
        if not email:
            return JsonResponse({'code':203,'error':'no email'})
        password_1 = json_dict.get('password_1',None)
        password_2 = json_dict.get('password_2',None)
        if not password_1 or not password_2:
            return JsonResponse({'code':204,'error':'no password'})
        # 密码1 和 密码2 需要一致
        if password_1 != password_2:
            return JsonResponse({'code':205,'error':'different password!'})
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            return JsonResponse({'code':206,'error':'user already existed!'})
        m = hashlib.md5()
        m.update(password_1.encode())
        sign = info = " "
        try:
            UserProfile.objects.create(
                username=username,
                nickname=username,
                password=m.hexdigest(),
                sign=sign,
                info=info, 
                email=email
            )
        except Exception as e:
            # logging
            return JsonResponse({'code':207,'error':'server is busy!'})
            # 生成token
        token = make_token({'username':username})
        return JsonResponse({
            'code':200,
            'username':username,
            'data':{
                'token':token.decode()
            }
            })
Example #5
0
def login(request):
    if request.method == 'GET':
        return render(request, 'user/login.html')
    elif request.method == 'POST':
        if not request.body:
            code = 202
            error = '请求为空'
            return JsonResponse({'code': code, 'error': error})
        try:
            json_obj = json.loads(request.body.decode())
        except Exception as e:
            code = ''
            error = ''
            return JsonResponse({'code': code, 'error': error})
        try:
            phonenumber = json_obj['phonenumber']
            password = json_obj['password']
            checked = json_obj.get('checked')
        except Exception as e:
            code = 210
            error = '请求关键字缺失'
            return JsonResponse({'code': code, 'error': error})

        if not phonenumber:
            code = 203
            error = '请求中未提交用户名'
            return JsonResponse({'code': code, 'error': error})
        if not password:
            code = 205
            error = '请求中未提交密码'
            return JsonResponse({'code': code, 'error': error})

        old_user = UserProfile.objects.filter(phonenumber=phonenumber)
        if not old_user:
            code = 208
            error = '用户名不存在'
            return JsonResponse({'code': code, 'error': error})

        p_m = hashlib.md5(mysettings.Token_key)
        p_m.update(password.encode())

        if old_user[0].password != p_m.hexdigest():
            code = 209
            error = '提交的密码不正确'
            return JsonResponse({'code': code, 'error': error})

        # 登录成功
        expire = 7 * 3600 * 24 if checked else 3600 * 24
        token = make_token(old_user[0], expire)
        code = 200
        data = {"token": token}
        return JsonResponse({'code': code, 'phonenumber': old_user[0].phonenumber, 'data': data})
Example #6
0
def users(request, username=None):
    if request.method == 'GET':
        # 取数据
        # /v1/users/***?info=1
        if username:
            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExist:
                user = None
            if not user:
                result = {'code': 208, 'error': 'The user is not exist'}
                return JsonResponse(result)
            if request.GET.keys():
                data = {}
                for k in request.GET.keys():
                    # 数据库中最好有默认值
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 证明指定查询用户全量数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
                return JsonResponse(result)
        else:
            # 全部用户数据
            all_users = UserProfile.objects.all()
            res = []
            for u in all_users:
                dic = {}
                dic['username'] = u.username
                dic['email'] = u.email
                res.append(dic)
            result = {'code': 200, 'data': res}
            return JsonResponse(result)

    elif request.method == 'POST':
        # 注册用户
        json_str = request.body
        if not json_str:
            # 前端异常提交数据
            result = {'code': '202', 'error': 'Please POST'}
            return JsonResponse(result)
        # 序列化JSON字符串
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not username:
            # 判断用户名是否为空
            result = {'code': 203, 'error': 'Please give name'}
            return JsonResponse(result)
        if not email:
            # 判断邮箱是否为空
            result = {'code': 204, 'error': 'Please give email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            # 判断两次密码是否有为空
            result = {'code': 205, 'error': 'Please give password'}
            return JsonResponse(result)
        if password_1 != password_2:
            # 判断两次密码是否一致
            result = {'code': 206, 'error': 'The password is wrong'}
            return JsonResponse(result)
        old_user = models.UserProfile.objects.filter(username=username)
        if old_user:
            # 判断用户名是否已存在s
            result = {'code': 207, 'error': 'this username is existed'}
            return JsonResponse(result)
        # 对密码进行散列操作
        h = hashlib.sha1()
        h.update(password_1.encode())
        try:
            # 在数据库中创建用户
            models.UserProfile.objects.create(
                username=username,
                nickname=username,
                email=email,
                password=h.hexdigest(),
            )
        except Exception as e:
            # 创建异常则返回异常信息
            print('UserProfile create error i %s' % e)
            result = {'code': 207, 'error': 'this username is existed'}
            return JsonResponse(result)
        # 创建成功则返回一个token信息
        token = make_token(username)
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)
    elif request.method == 'PUT':
        # 修改用户数据
        # 'form enctype='
        # 前端返回的JSON格式{'nickname':****, 'sign':***, 'info':***}
        users = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': 'data null'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            # 昵称不能为空
            result = {'code': 209, 'error': 'nickname is null'}
            return JsonResponse(result)
        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')
        # 存
        users.sign = sign
        users.info = info
        users.nickname = nickname
        users.save()

        result = {'code': 200, 'username': username}
        return JsonResponse(result)

    return JsonResponse({'code': 200, 'data': {'username': 1}})
Example #7
0
def users(request, username=None):
    # 获取用户数据
    if request.method == 'GET':
        # /v1/users/kzzf?info=1  获取对象的对应属性---> {'info': 'xxx'}
        if username:
            # 具体用户的数据
            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExist:
                user = None
            if not user:
                result = {'code': 208, 'error': '用户不存在'}
                return JsonResponse(result)

            # 判断有无查询字符串
            if request.GET.keys():
                data = {}
                for k in request.GET.keys():
                    # 判断对象是否有此属性》》》》》》》》》》》》》》》》》
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 没有查询字符串,返回前端需要的所有属性
                result = {'code': 200, 'username': username, 'data':
                # user.avatar拿到的是图片对象,str一下拿路径
                    {'info': user.info, 'sign': user.sign, 'nickname': user.nickname, 'avatar': str(user.avatar)}}
                return JsonResponse(result)

        else:
            # 查询全部用户的数据
            all_users = UserProfile.objects.all()
            res = []
            for user in all_users:
                d = dict()
                d['username'] = user.username
                d['email'] = user.email
                res.append(d)
            result = {'code': 200, 'data': res}
            return JsonResponse(result)

    # 注册用户
    elif request.method == 'POST':
        # 获取前端传递的json数据
        json_str = request.body
        if not json_str:
            # 前端异常提交:空数据
            result = {'code': 202, 'error': 'Please POST data'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not username:
            result = {'code': 203, 'error': 'Please give me username'}
            return JsonResponse(result)
        if not email:
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            result = {'code': 205, 'error': 'Please give me password'}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {'code': 206, 'error': '两次密码不一致'}
            return JsonResponse(result)

        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': '用户名已存在'}
        hash_password = hashlib.sha1()
        hash_password.update(password_1.encode())
        try:
            UserProfile.objects.create(username=username, nickname=username, email=email,
                                       password=hash_password.hexdigest())
        except Exception as e:
            print('新用户创建失败,error=%s' % e)
            result = {'code': 207, 'error': '用户名已存在'}
            return JsonResponse(result)

        # 注册成功,生成token记录登陆状态
        token = make_token(username)
        result = {'code': 200, 'username': username, 'data': {'token': token.decode()}}
        return JsonResponse(result)

    # 修改用户数据 /v1/users/<username>
    elif request.method == 'PUT':
        user = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': '请上传数据'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            result = {'code': 209, 'error': '昵称不能为空'}
            return JsonResponse(result)
        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        user.sign = sign
        user.info = info
        user.nickname = nickname
        user.save()
        result = {'code': 200, 'username': username}
        return JsonResponse(result)
Example #8
0
def users(request, username=None):

    if request.method == 'GET':
        all_users = UserProfile.objects.all()
        res = []
        for u in all_users:
            d = {}
            d['username'] = u.username
            d['email'] = u.email
            res.append(d)
        result = {'code': 200, 'data': res}
        return JsonResponse(result)

    elif request.method == 'POST':

        json_str = request.body
        if not json_str:
            result = {'code': '202', 'error': 'Please POST data'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not username:
            result = {'code': 203, 'error': 'Please give me uesrname'}
            return JsonResponse(result)
        if not email:
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            result = {'code': 205, 'error': 'Please give me password'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 206, 'error': 'The password is wrong!'}
            return JsonResponse(result)
        #检查用户是否存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': 'The username is existed!!!'}
            return JsonResponse(result)

        h_p = hashlib.sha1()
        h_p.update(password_1.encode())
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=h_p.hexdigest())
        except Exception as e:
            print('UserProfile create error is %s' % (e))
            result = {'code': 207, 'error': 'The username is existed!!!'}
            return JsonResponse(result)
        token = make_token(username)
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        pass
        users = UserProfile.objects.filter(username=username)
        if not users:
            result = {'code': 208, 'error': 'The user is not existed'}
            return JsonResponse(result)

        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': 'Please give me data'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            result = {'code': 209, 'error': 'nickname is none!'}
            return JsonResponse(result)
        sign = json_obj.get('sing', '')
        info = json_obj.get('info', '')

        users[0].sign = sign
        users[0].info = info
        users[0].nickname = nickname
        users[0].save()

        result = {'code': 200, 'username': username}
        return JsonResponse(result)

    return JsonResponse({'code': 200, 'data': {'username': 1}})
Example #9
0
def users(request, username=None):
    if request.method == 'GET':

        if username:
            try:
                user = models.User.objects.get(username=username)
            except models.User.DoesNotExist:
                user = None
            if not user:
                result = {'code': 208, 'error': 'The user is not existed'}
                return JsonResponse(result)
            # 判断查询字符串
            if request.GET.keys():
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 证明指定查询用户全量数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
                return JsonResponse(result)

        else:
            # 获取全部用户的数据
            all_users = models.User.objects.all()
            print(all_users)
            res = []
            for u in all_users:
                d = {}
                d['username'] = u.username
                d['email'] = u.email
                res.append(d)
            result = {'code': 200, 'data': res}
            return JsonResponse(result)

    elif request.method == 'POST':
        # 获取json数据
        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': 'Please POST data'}
            return JsonResponse(result)
        # 反序列化json_str
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password1 = json_obj.get('password_1')
        password2 = json_obj.get('password_2')
        if not username:
            result = {'code': 203, 'error': 'Please give me username'}
            return JsonResponse(result)
        if not email:
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)
        if not password1 or not password2:
            result = {'code': 205, 'error': 'Please give me password'}
            return JsonResponse(result)
        if password1 != password2:
            result = {'code': 206, 'error': 'The password is wrong'}
            return JsonResponse(result)
        # 检查用户是否存在

        old_user = models.User.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': 'The username is existed'}
            return JsonResponse(result)
        h_p = hashlib.sha1()
        h_p.update(password1.encode())
        try:
            models.User.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=h_p.hexdigest())
        except Exception as e:
            print('User create error is %s' % e)
            result = {'code': 207, 'error': 'The username is existed'}
            return JsonResponse(result)

        # make_token
        token = make_token(username)
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        # print(dir(request))

        user = request.user
        # print(user)
        json_str = request.body
        # 判断前端是否给了json串
        if not json_str:
            result = {'code': 202, 'error': 'Please Give Data'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        # 昵称不能为空
        if not nickname:
            result = {'code': 209, 'error': 'Please Give nickname'}
            return JsonResponse(result)

        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')
        user.sign = sign
        user.info = info
        user.nickname = nickname
        user.save()
        result = {'code': 200, 'username': username}
        return JsonResponse(result)
Example #10
0
def users(request, username=None):
    if request.method == 'GET':
        #获取用户数据
        if username:
            #拿指定用户
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                user = None
            if not user:
                result = {'code': 208, 'error': 'no user'}
                return JsonResponse(result)
            #检查是否有查询字符串
            if request.GET.keys():
                #查询指定字段
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        v = getattr(user, k)
                        if k == 'avatar':
                            data[k] = str(v)
                        else:
                            data[k] = v
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)

            else:
                #全量查询( pwd emi不给)
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'avatar': str(user.avatar),
                        'nickname': user.nickname
                    }
                }
                return JsonResponse(result)
            return JsonResponse({
                'code': 200,
                'error': 'wolaila GET %s' % (username)
            })
        else:
            return JsonResponse({'code': 200, 'error': 'wolaila GET'})

    elif request.method == 'POST':
        #创建用户
        #前端注册页面 5000register
        #校验前端提交的基础数据
        json_str = request.body
        if not json_str:
            result = {'code': 201, 'error': 'give me data'}
            return JsonResponse(result)
        #load回来是个字典,所以要 把字典中的字段取出来
        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        if not username:
            result = {'code': 200, 'error': 'give me username'}
            return JsonResponse(result)

        email = json_obj.get('email')
        if not email:
            result = {'code': 203, 'error': 'give me email'}
            return JsonResponse(result)

        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not password_1 or not password_2:
            result = {'code': 204, 'error': 'give me pwd'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 500, 'error': 'not same pwd'}
            return JsonResponse(result)

        #一定要优先查询当前用户名是否存在
        #用get查询一定要try一下
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 206, 'error': 'is existed'}
            return JsonResponse(result)

        #密码处理 md5 hash
        m = hashlib.md5()
        m.update(password_1.encode())

        #charfield 尽量避免使用null=true 都完成了之后再做数据的插入
        sign = info = ''
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       password=m.hexdigest(),
                                       sign=sign,
                                       info=info,
                                       email=email)
        except Exception as e:
            result = {'code': 207, 'error': 'is busy'}
            return JsonResponse(result)

        #make token  用户注册成功 生成token 返给前端
        token = make_token(username)

        #正常返回前端
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        #更新数据
        #此头可获取前端传来的token
        #meta可拿去http协议原生头,meta也是类字典对象,可使用字典相关方法 ,有可能被django重命名
        request.META.get('HTTP_AUTHORIZATION')

        user = request.user
        print(111111111)
        print(user)
        json_str = request.body
        if not json_str:
            result = {'code': 209, 'error': 'p json'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)

        if 'sign' not in json_obj:
            result = {'code': 210, 'error': 'no sign'}
            return JsonResponse(result)
        if 'info' not in json_obj:
            result = {'code': 211, 'error': 'no info'}
            return JsonResponse(result)

        sign = json_obj.get('sign')
        info = json_obj.get('info')

        request.user.sign = sign
        request.user.info = info
        request.user.save()
        result = {'code': 200, 'username': request.user.username}
        return JsonResponse(result)
    else:
        raise
    return JsonResponse({'code': 200})
Example #11
0
def users(request, username=None):
    if request.method == 'GET':
        # 取数据
        if username:
            # 具体用户的数据
            # /v1/users/guoxiaonao?info=1&email=1 {'info':xxx, 'email':xxx}
            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExist:
                user = None

            if not user:
                # 用户不存在
                result = {'code': 208, 'error': 'The user is not existed'}
                return JsonResponse(result)

            # 判断查询字符串
            if request.GET.keys():
                # 证明有查询字符串
                data = {}
                for k in request.GET.keys():
                    # 数据库中最好是有非空默认值
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 证明指定查询用户全量数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
                return JsonResponse(result)
        else:
            # 全部用户的数据
            all_users = UserProfile.objects.all()
            res = []
            for u in all_users:
                d = {}
                d["username"] = u.username
                d["email"] = u.email
                res.append(d)
            result = {"code": 200, "data": res}
            return JsonResponse(result)

    elif request.method == "POST":

        json_str = request.body.decode()
        if not json_str:
            result = {"code": 202, "error": "Please POST data"}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        username = json_obj.get("username")
        email = json_obj.get("email")
        password_1 = json_obj.get("password_1")
        password_2 = json_obj.get("password_2")
        if not username:
            result = {"code": 203, "error": "Please give me a username"}
            return JsonResponse(result)
        if not email:
            result = {"code": 204, "error": "Please give me a email"}
            return JsonResponse(result)

        if not password_1 or not password_2:
            result = {"code": 205, "error": "Please give me password"}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {"code": 206, "error": "The password is wrong"}
            return JsonResponse(result)

        old_user = UserProfile.objects.filter(username=username)

        if old_user:
            result = {"code": 207, "error": "The username is existed!!!"}
            return JsonResponse(result)
        # 将密码进行哈希运算加密
        h_p = hashlib.sha1()
        h_p.update(password_1.encode())

        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=h_p.hexdigest())
        except Exception as e:
            print("UseProfile create error is %s" % (e))
            result = {"code": 207, "error": "The username is existed!!!"}
            return JsonResponse(result)

        token = make_token(username)
        result = {
            "code": 200,
            "username": username,
            "data": {
                "token": token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':

        # 修改用户数据  /v1/users/用户名

        # 前端返回的json格式{'nickaname': xxx, 'sign':xxx, 'info':xxx}

        user = request.user

        json_str = request.body.decode()

        # 判断前端是否给了json串

        if not json_str:
            result = {'code': 202, 'error': 'Please give me data'}

            return JsonResponse(result)

        json_obj = json.loads(json_str)

        nickname = json_obj.get('nickname')

        if not nickname:
            # 昵称不能为空

            result = {'code': 209, 'error': 'nickname is none!'}

            return JsonResponse(result)

        # sign&info 默认值为空字符串

        sign = json_obj.get('sign', '')

        info = json_obj.get('info', '')

        # 存

        user.sign = sign

        user.info = info

        user.nickname = nickname

        user.save()

        result = {'code': 200, 'username': username}

        return JsonResponse(result)
Example #12
0
def users(request, username=None):
    if request.method == "GET":
        #获取数据,现在这个GET存在两种可能,一种带用户名,一种不带
        #/v1/users/@ant?info=1&email=1 {'info':XXX}表示只取某个对象的指定属性
        if username:
            #获取具体用户信息
            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExis:
                user = None
            if not user:
                #用户不存在
                return JsonResponse({
                    'code': 208,
                    'error': 'The user is not existed'
                })
            # 判断查询字符串
            if request.GET.keys():
                #证明有查询字符串
                data = {}
                for k in request.GET.keys():
                    #数据库中最好是非空默认值.
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                #证明指定查询用户全量数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar),
                    }
                }
                return JsonResponse(result)
        else:
            #全部用户的数据
            all_users = UserProfile.objects.all()
            res = []
            for u in all_users:
                d = {}
                d['username'] = u.username
                d['email'] = u.email
                res.append(d)
            #通过列表嵌套字典的方式来存储每条记录.
            return JsonResponse({'code': 200, 'data': res})

    elif request.method == "POST":
        #注册用户
        json_str = request.body
        if not json_str:
            #前端异常提交,空数据
            result = {'code': 202, 'error': 'Please POST data'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        email = json_obj.get('email')
        if not username:
            result = {'code': 203, 'error': 'Please give me username'}
            return JsonResponse(result)
        if not email:
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            return JsonResponse({
                'code': 205,
                'error': 'Please give me password'
            })
        if password_1 != password_2:
            return JsonResponse({
                'code': 206,
                'error': 'The password is wrong!'
            })

        # 检查用户是否存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            return JsonResponse({
                'code': 207,
                'error': 'The username is exited!!!'
            })

        # 密码做哈希
        password_hash = CodePwd.code_password(password_1)
        #写入数据库
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       password=password_hash,
                                       email=email)
        except Exception as e:
            print('UserProfile create error is %s' % e)
            return JsonResponse({
                'code': 207,
                'error': 'The username is exited!!!'
            })
        # make_token,直接登录
        token = make_token(username)
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }

        return JsonResponse(result)

    elif request.method == "PUT":
        # 修改用户数据  /v1/users/用户名
        # 前端返回的json格式{'nickaname': xxx, 'sign':xxx, 'info':xxx}
        user = request.user  # 获取装饰器token验证后的user

        json_str = request.body
        # 判断前端是否给了json串
        if not json_str:
            result = {'code': 202, 'error': 'Please give me data'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            # 昵称不能为空
            result = {'code': 209, 'error': 'nickname is none!'}
            return JsonResponse(result)

        # sign&info 默认值为空字符串,允许这两项为空
        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        # 存
        user.sign = sign
        user.info = info
        user.nickname = nickname
        user.save()

        result = {'code': 200, 'username': username}
        return JsonResponse(result)

    elif request.method == "DELETE":
        user = request.user
        pass
Example #13
0
def users(request, username=None):
    if request.method == 'GET':
        # 取数据
        # /v1/users/liuxiaoxia?info=1 {'info':xxx}
        if username:
            # 具体用户的数据
            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExist:
                user = None

            if not user:
                result = {'code': 208, 'error': 'The user is not existed'}
                return JsonResponse(result)

            # 判断查询字符串
            if request.GET.keys():
                # 证明有查询字符串
                data = {}
                for k in request.GET.keys():
                    # 数据库中最好是有非空默认值
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 证明指定查询用户全量数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
                return JsonResponse(result)
        else:
            # 全部用户的数据
            # UserProfile获取全部用户的数据
            all_users = UserProfile.objects.all()
            res = []
            for u in all_users:
                d = {}
                d['username'] = u.username
                d['email'] = u.email
                res.append(d)
                print(d)

            result = {'code': 200, 'data': res}
            return JsonResponse(result)
    elif request.method == 'POST':
        #注册用户
        #密码需要SHA-1 hashlib.sha1() -> update -> hexdigest()

        #获取json数据
        json_str = request.body
        print(json_str)

        if not json_str:
            result = {'code': 202, 'error': 'Please POST data'}
            return JsonResponse(result)

        #反序列话json_str
        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname', '')
        email = json_obj.get('email', '')
        password = json_obj.get('password')

        if not nickname:
            result = {'code': 203, 'error': 'Please give me nickname'}
            return JsonResponse(result)

        if not email:
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)

        if not password:
            result = {'code': 205, 'error': 'Please give me password'}
            return JsonResponse(result)

        #检查用户是否存在
        old_email = UserProfile.objects.filter(email=email)
        if old_email:
            #该用户已经注册
            result = {'code': 207, 'error': 'The email is existed'}
            return JsonResponse(result)

        s1 = hashlib.sha1()
        s1.update(password.encode())
        try:
            UserProfile.objects.create(nickname=nickname,
                                       email=email,
                                       password=s1.hexdigest())
        except Exception as e:
            print('UserProfile create error is %s' % (e))
            result = {'code': 207, 'error': 'The email is existed'}
            return JsonResponse(result)

        #make token
        token = make_token(email)
        result = {
            'code': 200,
            'nickname': nickname,
            'email': email,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        #修改用户数据
        #前端返回的json格式{'nickname':xxx, 'sign':xxx, 'info':xxx}
        json_str = request.body
        #print(json_str)

        #判断前端是否给了json
        if not json_str:
            result = {'code': 202, 'error': 'Please give me data'}
            return JsonResponse(result)

        if not username:
            result = {'code': 203, 'error': 'Please give me username'}
            return JsonResponse(result)

        #检查用户是否存在
        user = request.user

        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname', '')
        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        if not nickname:
            #昵称不能为空
            result = {'code': 209, 'error': 'nickname is none!'}
            return JsonResponse(result)

        #存
        user.nickname = nickname
        user.sign = sign
        user.info = info
        user.save()

        result = {'code': 200, 'username': username}
        return JsonResponse(result)
    return JsonResponse({'code': 200, 'username': 1})
Example #14
0
def users(request, username=None):
    #http://127.0.0.1:8000/v1/users GET
    if request.method == 'GET':
        #查询数据
        if username:
            #查询具体用户的数据
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                user = None

            if not user:
                result = {'code':10108, 'error': 'User is not existed !'}
                return JsonResponse(result)
            #判断是否有查询字符串
            if request.GET.keys():
                #有查询字符串
                data = {}
                # /?nickname=1&sign=1&ppp=1
                for k in request.GET.keys():
                    #判断查询字符串的key 是否在表里有该对应的字段
                    if k in ['password']:
                        continue

                    if hasattr(user, k):
                        data[k] = getattr(user, k)

                result = {'code':200, 'username':username, 'data':data}

                return JsonResponse(result)

            else:
                #无查询字符串
                result = {'code':200, 'username':username, 'data':{'nickname':user.nickname, 'email':user.email,'sign':user.sign, 'info': user.info,'avatar':str(user.avatar)}}
                return JsonResponse(result)
        else:
            print('---全量---')
            all_user = UserProfile.objects.all()
            all_data = []
            for u in all_user:
                d = {'nickname':u.nickname, 'email':u.email, 'sign': u.sign }
                all_data.append(d)
            return JsonResponse({'code':200, 'data':all_data})








    elif request.method == 'POST':
        #创建资源/ 注册用户
        # 注册用户成功后 签发 token[一天]
        #用户模块状态码 10100 开始 / 200为正常返回
        #{'code': 200/101xx, 'data':xxx, 'error':xxx}
        #响应json字符串 return JsonResponse({})
        print(12123123123)
        json_str = request.body
        if not json_str:
            result = {'code':10100, 'error':'Please give me data'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not username:
            result = {'code':10101, 'error':'Please give me username'}
            return JsonResponse(result)
        if not email:
            result = {'code':10102, 'error':'Please give me email'}
            return JsonResponse(result)

        if not password_1 or not password_2:
            result = {'code':10103, 'error':'Please give me password'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 10104, 'error':'The password is not same!'}
            return JsonResponse(result)
        #检查当前用户名是否可用
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 10105, 'error':'The username is already existed!'}
            return JsonResponse(result)
        #密码进行哈希 - md5
        p_m = hashlib.md5()
        p_m.update(password_1.encode())

        #创建用户
        now = datetime.datetime.now()
        try:
            UserProfile.objects.create(username=username,password=p_m.hexdigest(),nickname=username, email=email, login_time=now)
        except Exception as e:
            print(e)
            result = {'code':10106, 'error':'The username is already used!'}
            return JsonResponse(result)

        #todo 生成token
        token = make_token(username, now)
        result = {'code':200, 'username':username, 'data':{'token':token.decode()}}
        return JsonResponse(result)

    elif request.method == 'PUT':
        #更新用户数据
        json_str  = request.body
        if not json_str:
            result = {'code': 10109, 'error': 'Please give me data'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        if 'sign' not in json_obj:
            result = {'code': 10110, 'error': 'Please give me sign !'}
            return JsonResponse(result)

        if 'info' not in json_obj:
            result = {'code':10111, 'error':'Please give me info'}
            return JsonResponse(result)

        if 'nickname' not in json_obj:
            result = {'code': 10112, 'error': 'Please give me nickname'}
            return JsonResponse(result)

        nickname = json_obj['nickname']
        sign = json_obj['sign']
        info = json_obj['info']

        #初级版
        # try:
        #     user = UserProfile.objects.get(username=username)
        # except Exception as e:
        #     result = {'code':10113, 'error':'no user'}
        #     return JsonResponse(result)

        #获取用户
        user = request.user

        #判断是否要更新
        to_update = False

        if user.nickname != nickname:
            to_update = True
        if user.sign != sign:
            to_update = True
        if user.info != info:
            to_update = True

        if to_update:
            print('----to updae----')
            user.nickname = nickname
            user.sign = sign
            user.info = info
            user.save()
        result = {'code':200, 'username':username}
        return JsonResponse(result)

    return HttpResponse('test user')
Example #15
0
def register_user(request):
    response = {}
    json_str = request.body
    print('json-str:', json_str)
    # 数据可用性判断
    if not json_str:
        response['code'] = 10100
        response['error'] = '请求中无内容'
        return JsonResponse(response)
    try:
        json_obj = json.loads(json_str)
    except Exception as e:
        print(e)
        response['code'] = 10101
        response['error'] = '请求内容格式有问题'
        return JsonResponse(response)
    username = json_obj.get('username')
    gender = json_obj.get('gender')
    birthday = json_obj.get('birthday')
    password_1 = json_obj.get('password_1')
    password_2 = json_obj.get('password_2')
    if not username:
        response['code'] = 10102
        response['error'] = '请求中未提交用户名'
        return JsonResponse(response)
    if not gender:
        response['code'] = 10103
        response['error'] = '请求中未提交性别'
        return JsonResponse(response)
    if not birthday:
        response['code'] = 10104
        response['error'] = '请求中未提交生日'
        return JsonResponse(response)
    if not password_1 or not password_2:
        response['code'] = 10105
        response['error'] = '请求中未提交密码'
        return JsonResponse(response)
    if password_1 != password_2:
        response['code'] = 10106
        response['error'] = '两次提交的密码不一致'
        return JsonResponse(response)

    # 检查当前用户名是否可用
    users = User.objects.filter(username=username)
    if users:
        response['code'] = 10107
        response['error'] = '用户名已存在'
        return JsonResponse(response)

    # 创建用户
    try:
        user_obj = User()
        user_obj.username = username
        user_obj.nickname = username
        user_obj.password = get_password(password_1)
        user_obj.gender = gender
        user_obj.birthday = birthday
        user_obj.save()
    except Exception as e:
        print(e)
        response['code'] = 10108
        response['error'] = '用户名已存在.'
        return JsonResponse(response)

    # 计算token
    token = make_token(username)
    response['code'] = 200
    response['username'] = username
    response['data'] = {"token": token.decode()}
    return JsonResponse(response)
Example #16
0
def users(req, username=None):
    if req.method == 'POST':
        # 注册
        json_str = req.body
        if not json_str:
            result = {'code': 202, 'error': 'Please POST data!!'}

            return JsonResponse(result)
        # 如果当前报错,请执行json_str.decode()
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')

        if not username:
            result = {'code': 203, 'error': 'Please give me username!'}
            return JsonResponse(result)

        if not email:
            result = {'code': 204, 'error': 'Please give me email!'}
            return JsonResponse(result)

        if not password_1 or not password_2:
            result = {'code': 205, 'error': 'Please give me password!'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 206, 'error': 'Please give me right password!'}
            return JsonResponse(result)

        # 检查用户名是否存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': 'The username is userd !!!'}
            return JsonResponse(result)

        # 密码散列
        p_m = hashlib.sha256()
        p_m.update(password_1.encode())

        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=p_m.hexdigest())
        except Exception as e:
            print('----create error is %s' % (e))
            result = {'code': 500, 'error': 'Sorry,server is busy !'}
            return JsonResponse(result)

        token = make_token(username)
        # token 编码问题? bytes串不能json dumps, 所以要执行decode方法
        # http://127.0.0.1:5000/register
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }

        return JsonResponse(result)

    elif req.method == 'GET':

        # s = json.dumps({'code':200})
        # return HttpResponse(s)
        # 获取数据
        if username:
            # 获取指定用户数据[]
            users = UserProfile.objects.filter(username=username)
            if not users:
                result = {'code': 208, 'error': 'The user is not existed.'}
                return JsonResponse(result)
            user = users[0]
            if req.GET.keys():
                # 当前请求有查询字符串
                data = {}
                for key in req.GET.keys():
                    if key == 'password':
                        # 如果查询密码,则continue!
                        continue
                    # hasattr 第一个参数为对象,第二个参数为属性字符串,若对象含有第二个参数的属性,则返回True,反之False
                    # getattr 参数用hasattr ,若对象含有第二个参数的属性,则反水对应属性的值,贩子抛出异常AttrbuteError
                    if hasattr(user, key):
                        if key == 'avatar':
                            # avatar 属性需要调用str方法__str__
                            data[key] = str(getattr(user, key))
                        else:
                            data[key] = getattr(user, key)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 无查询字符串,即获取指定用户所有数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
                return JsonResponse(result)
        else:
            # 没有username
            # [{username nickname sign info email avatar}]
            all_users = UserProfile.objects.all()
            result = []
            for _user in all_users:
                d = {}
                d['username'] = _user.username
                d['nickname'] = _user.nickname
                d['sign'] = _user.sign
                d['info'] = _user.info
                d['email'] = _user.email
                d['avatar'] = str(_user.avatar)
                result.append(d)
            return JsonResponse({'code': 200, 'data': result})

        # return JsonResponse({'code': 200})

    elif req.method == 'PUT':
        # 前段访问地址 http://127.0.0.1:5000/<username>/change_info
        # 后端地址 http://127.0.0.1:8000/v1/users/<username>
        # 更新用户数据
        user = req.user  # 装饰器调用
        # user = check_token(req)
        # if not user:
        #   result = {'code': 209, 'error': 'The PUT need token!'}
        #   return JsonResponse(result)
        json_str = req.body
        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            result = {'code': 210, 'error': 'The nickname can not be none!'}
            return JsonResponse(result)
        sign = json_obj.get('sign')
        if sign is None:
            result = {'code': 211, 'error': 'The sign not in json!'}
            return JsonResponse(result)
        info = json_obj.get('info')
        if info is None:
            result = {'code': 212, 'errror': 'The info not in json!'}
            return JsonResponse(result)

        if user.username != username:
            result = {'code': 213, 'error': 'This is wrong!!!'}
            return JsonResponse(result)
        user.sign = sign
        user.info = info
        user.nickname = nickname
        user.save()
        result = {'code': 200, 'username': username}
        return JsonResponse(result)
Example #17
0
def users(request, username=None):
    if request.method == 'GET':
        if username:
            # 具体用户的数据
            # /v1/users/clark?into=1&email=1
            try:
                user = models.UserProfile.objects.get(username=username)
            except models.UserProfile.DoesNotExist:
                user = None

            if not user:
                # 用户不存在
                result = {'code': 208, 'error': 'The user is not existed'}
                return JsonResponse(result)

            # 判断查询字符串
            if request.GET.keys():
                # 证明有查询字符串
                data = {}
                for k in request.GET.keys():
                    # 数据库中最好有非空默认值
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 证明指定查询用户全量数据
                result = {'code': 200, 'username': username,
                          'data': {'info': user.info, 'sign': user.sign,
                                   'nickname': user.nickname,
                                   'avatar': str(user.avatar)
                                   }}
                return JsonResponse(result)

        else:
            # 全部用户的数据
            try:
                users = models.UserProfile.objects.all()
            except:
                users = []

            data = []
            host = request.META['HTTP_HOST']
            for item in users:
                obj = {
                    'username': item.username,
                    'email': item.email,
                    'info': item.info,
                    'avatar': host + "/" + str(item.avatar),
                    'sign': item.sign
                }
                data.append(obj)

            result = {"code": 200, 'data': data}
            return JsonResponse(result)

    elif request.method == 'POST':
        # 注册
        # 密码需用SHA-1 hashlib.sha1() ->update ->
        json_str = request.body
        if not json_str:
            # 前端异常提交,空数据
            result = {"code": 202, 'error': 'please POST data'}
            return JsonResponse(result)

        # 反序列化json_str
        json_str = json.loads(json_str)
        username = json_str.get("username")
        email = json_str.get("email")
        password_1 = json_str.get("password_1")
        password_2 = json_str.get("password_2")

        if not username:
            # 用户名不存在
            result = {"code": 203, "error": 'please give me username'}
            return JsonResponse(result)
        if not email:
            # 邮箱不存在
            result = {"code": 204, "error": 'please give me email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            # 密码不存在
            result = {"code": 205, "error": 'please give me password'}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {"code": 206, "error": 'Two password is not same'}
            return JsonResponse(result)

        # 检查用户是否存在
        old_user = models.UserProfile.objects.filter(username=username)
        if old_user:
            # 改用户已经注册
            result = {"code": 207, "error": '用户已存在!'}
            return JsonResponse(result)

        # 将密码进行hash
        h = hashlib.sha1()
        h.update(password_1.encode())
        try:
            new_user = models.UserProfile.objects.create(username=username, nickname=username,
                                                         email=email, password=h.hexdigest())
        except Exception as e:
            print("UserProfile create error is %s" % (e))
            result = {"code": 207, "error": 'The username is existed'}
            return JsonResponse(result)

        # 根据用户名 生成token
        token = make_token(username)
        result = {'code': 200, 'username': username,
                  'data': {'token': token.decode(), 'nickname': username, 'avatar': new_user.avatar}}
        return JsonResponse(result)

    elif request.method == 'PUT':

        user = request.user
        if not username:
            # 用户名不存在
            result = {"code": 203, "error": 'please give me username'}
            return JsonResponse(result)

        if username != user.username:
            result = {"code": 203, "error": '没有权限修改!'}
            return JsonResponse(result)

        json_str = request.body
        # 判断前端是否给了json 串
        if not json_str:
            result = {'code': 202, 'error': '没有数据传过来!'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            result = {'code': 209, 'error': '昵称不能为空!'}
            return JsonResponse(result)
        #
        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        # 保存
        user.sign = sign
        user.nickname = nickname
        user.info = info
        user.save()

        return JsonResponse({'code': 200, 'username': username})
Example #18
0
def users(request, username=None):
    if request.method == 'GET':
        # 獲取用戶數據
        if username:
            # /v1/users/<username>
            # 拿指定用戶數據
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                user = None
            if not user:
                result = {'code': 208, 'error': 'There is no user!'}
                return JsonResponse(result)
            # 檢查是否有帶查詢字符串
            if request.GET.keys():
                # 查詢指定字符串
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        v = getattr(user, k)
                        if k == 'avatar':
                            data[k] = str(v)
                        else:
                            data[k] = v
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 全量查詢「password email 不給」
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'avatar': str(user.avatar),
                        'nickname': user.nickname
                    }
                }
                return JsonResponse(result)
            return JsonResponse({
                'code': 200,
                'error': 'GET accept! %s' % (username)
            })
        else:
            return JsonResponse({'code': 200, 'error': 'GET accept!'})
    elif request.method == 'POST':
        # request.POST只能提取'表單POST'的數據,json格式使用request.body
        # 創建用戶
        # 前端註冊地址 http://127.0.0.1:5000/register
        json_str = request.body
        if not json_str:
            result = {'code': 201, 'error': 'Please give me data!'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        if not username:
            result = {'code': 202, 'error': 'Please give me username!'}
            return JsonResponse(result)

        email = json_obj.get('email')
        if not email:
            result = {'code': 203, 'error': 'Please give me email!'}
            return JsonResponse(result)

        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not password_1 or not password_2:
            result = {'code': 204, 'error': 'Please give me password!'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 205, 'error': 'password_1&2 are not the same!'}
            return JsonResponse(result)

        # 優先查詢一下用戶名是否已經存在
        old_users = UserProfile.objects.filter(username=username)
        if old_users:
            result = {'code': 206, 'error': 'User is already existed!'}
            return JsonResponse(result)

        # 密碼處理 md5 哈希/散列 不要說加密!
        m = hashlib.md5()
        m.update(password_1.encode())
        #======charfild 盡量避免使用 null=True
        sign = info = ''
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=m.hexdigest(),
                                       sign=sign,
                                       info=info)
        except Exception as e:
            # 報錯可能:用戶名已存在!因為可能別人比你更快註冊一樣的名子or數據庫當機
            result = {'code': 207, 'error': 'Server is busy!'}
            return JsonResponse(result)

        # make token
        token = make_token(username)

        # 正常返回給前端
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        # 更新數據
        # 此頭可以獲取前端傳來的token
        # META可拿去http協議原生頭,META也是類字典對象可使用字典相關方法
        # 特別注意 http頭有可能被django重新命名,建議上網google
        token = request.META.get('HTTP_AUTHORIZATION')
        user = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 209, 'error': 'Please give json!'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)

        if 'sign' not in json_obj:
            result = {'code': 210, 'error': 'No sign!'}
            return JsonResponse(result)
        if 'info' not in json_obj:
            result = {'code': 211, 'error': 'No info!'}
            return JsonResponse(result)

        sign = json_obj.get('sign')
        info = json_obj.get('info')

        request.user.sign = sign
        request.user.info = info
        request.user.save()
        result = {'code': 200, 'username': request.user.username}
        return JsonResponse(result)
    else:
        raise
    return JsonResponse({'code': 200})
def users(request, username=None):
    # 注册
    if request.method == 'POST':
        json_str = request.body.decode()  # 接受json数据,字节串转换为字符串
        if not json_str:
            result = {'code': 202, 'error': 'Please POST data!'}
            return JsonResponse(result)
        # 如果当前报错,执行json_str=json_str.decode()
        json_obj = json.loads(json_str)
        # 尽量不用索引直接强拿,用.get
        username = json_obj.get('username')
        e_mail = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not username:
            result = {'code': 203, 'error': 'username can not empty'}
            return JsonResponse(result)
        if not e_mail:
            result = {'code': 204, 'error': 'e_mail can not empty'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            result = {'code': 205, 'error': 'password can not empty'}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {'code': 206, 'error': 'both of password not same'}
            return JsonResponse(result)
        # 检查用户名
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': 'The username is used !!'}
            return JsonResponse(result)

        # 密码散列
        p_m = hashlib.sha256()
        # ***转成二进制***
        p_m.update(password_1.encode())

        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=e_mail,
                                       password=p_m.hexdigest())
        except Exception as e:
            print(e)
            result = {'code': 500, 'error': 'Server is busy'}
            return JsonResponse(result)
        token = make_token(username)
        # token 编码问题 byte串不能json dump,所以要执行decode方法

        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    # 查询
    elif request.method == 'GET':
        # 有一定缺陷
        # s=json.dumps({'code':200})
        # return HttpResponse(s)

        # 获取数据
        if username:
            # 获取指定用户数据
            users = UserProfile.objects.filter(
                username=username)  # filter只能找一个
            if not users:
                result = {'code': 208, 'error': 'The users is not existed'}
                return JsonResponse(result)
            user = users[0]
            if request.GET.keys():
                # 当前字符串的值
                data = {}
                for key in request.GET.keys():
                    if key == 'password':
                        # 如果查询密码,则continue
                        continue

                    # hasattr 第一个参数为对象,第二个参数为属性字符串
                    # 若对象还有第二个参数的属性,返回True,反之False
                    if hasattr(user, key):
                        if key == 'avatar':
                            # avatar属性需要调用str方法   __str__
                            data[key] = str(getattr(user, key))
                        else:
                            data[key] = getattr(user, key)
                        data[key] = getattr(user, key)
                    result = {'code': 200, 'username': username, 'data': data}
            else:
                # 无查询字符串,即获取指定用户的所有数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
            return JsonResponse(result)
            # getattr 参数同hasattr,若对象含有第二个参数的属性,
            # 则返回对应属性的值,反之,抛出异常 AttributeError
        else:
            # 没有username
            # [{username,nickname,sign,info,e_mail,avatar}]
            # {'code':200,'data':[{},{}]}

            #all(),(慎用),会使内存压力变大
            all_users = UserProfile.objects.all()
            result = []
            for _user in all_users:
                d = {}
                d['username'] = _user.username
                d['nickname'] = _user.nickname
                d['sign'] = _user.sign
                d['info'] = _user.info
                d['email'] = _user.email
                d['avatar'] = str(_user.avatar)
                result.append(d)
            return JsonResponse({'code': 200, 'data': result})

        # 获取指定用户数据
        # 使用JsonResponse,让传输格式更完整
        # return JsonResponse({'code':200})
    # 修改
    elif request.method == 'PUT':
        # 更新用户数据
        # http://127.0.0.1:8000/v1/users/<username>
        # user = check_token(request)
        user = request.user
        # if not user:
        #     result = {'code': '209', 'error': 'The Put need token'}
        #     return JsonResponse(result)
        json_str = request.body
        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            result = {'code': '209', 'error': 'the nickname can not empty'}
            return JsonResponse(result)
        sign = json_obj.get('sign')
        if sign is None:
            result = {'code': 211, 'error': 'The sign not in json'}
            return JsonResponse(result)
        info = json_obj.get('info')
        if info is None:
            result = {'code': 212, 'error': 'The info not in json'}
            return JsonResponse(result)
        if user.username != username:
            result = {'code': 213, 'error': 'What are you doing!!!'}
            return JsonResponse(result)
        # 修改个人信息
        user.sign = sign
        user.info = info
        user.nickname = nickname

        #修改信息赋值最后要加 --user.save()--修改数据一定要通过save保存数据
        user.save()
        result = {'code': 214, 'username': username}
        return JsonResponse(result)
Example #20
0
def register(request):
    if request.method == 'GET':
        return render(request, 'user/register.html')
    if request.method == 'POST':
        print(request.body)
        try:
            json_obj = json.loads(request.body.decode())
            # 校验数据
            phonenumber = json_obj['phonenumber']
            nickname = json_obj['nickname']
            password = json_obj['password']
            authcode = json_obj['authcode']
            checked = json_obj.get('checked')
        except Exception as e:
            print("user/POST/try1/", e)
            code = 10100
            error = "注册数据有问题"
            return JsonResponse({'code': code, 'error': error})

        if not phonenumber:
            code = 10101
            error = "请输入用户名"
            return JsonResponse({'code': code, 'error': error})
        if len(phonenumber) != 11:
            code = 208
            error = "请输入正确的用户名"
            return JsonResponse({'code': code, 'error': error})
        if not nickname:
            code = 10102
            error = "请输入昵称"
            return JsonResponse({'code': code, 'error': error})
        if not password:
            code = 10205
            error = "请输入密码"
            return JsonResponse({'code': code, 'error': error})
        if not checked:
            code = 10206
            error = "请勾选使用协议"
            return JsonResponse({'code': code, 'error': error})
        if not authcode:
            code = 10207
            error = "验证码错误"
            return JsonResponse({'code': code, 'error': error})

        older_user = UserProfile.objects.filter(phonenumber=phonenumber)
        if older_user:
            code = 10207
            error = "用户名已存在"
            return JsonResponse({'code': code, 'error': error})

        p_m = hashlib.md5(mysettings.Token_key)
        p_m.update(password.encode())
        try:
            new_user = UserProfile.objects.create(phonenumber=phonenumber, nickname=nickname,
                                                  password=p_m.hexdigest())
        except Exception as e:
            print("user/POST/create/", e)
            code = 207
            error = "用户名已存在"
            return JsonResponse({'code': code, 'error': error})

        token = make_token(new_user)
        code = 200
        data = {"token": token}
        return JsonResponse({'code': code, 'phonenumber': phonenumber, 'data': data})
Example #21
0
def users(request,username=None):
    if request.method =='GET':
        # 获取用户数据
        if username:
            # /v1/users/<username>
            # 拿指定用户数据
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                user = None
            if not user:
                result = {'code': 208, 'error': 'no user'}
                return JsonResponse(result)
            # 检查是否有查询字符串
            if request.GET.keys():
                # 查询指定字段
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        v = getattr(user, k)
                        if k == 'avatar':
                            data[k] = str(v)
                        else:
                            data[k] = v
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 全量查询【password email address ...】
                result = {'code': 200, 'username': username,
                          'data': {'info': user.info, 'sign': user.sign, 'avatar': str(user.avatar),
                                   'nickname': user.nickname,'phone':user.phone,'address':user.address}}
                return JsonResponse(result)
    elif request.method=='POST':
        #前端页面地址 127.0.0.1/register.html
        #创建用户 符合restful规则
        #新建token
        json_str = request.body
        if not json_str:
            result = {'code': 201, 'error': 'Please give me data'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        if not username:
            result = {'code': 202, 'error': '请输入用户名'}
            return JsonResponse(result)

        email = json_obj.get('email')
        if not email:
            result = {'code': 203, 'error': '请输入邮箱'}
            return JsonResponse(result)
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not password_1 or not password_2:
            result = {'code': 204, 'error': '请输入密码'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 205, 'error': '请输入相同的密码'}
            return JsonResponse(result)
        # 优先查询当前用户名是否已存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 206, 'error': '用户名已存在'}
            return JsonResponse(result)
        #密码处理 md5哈希/散列
        m = hashlib.md5()
        m.update(password_1.encode())
        #======charfield 尽量避免使用 null=True
        sign = info = ''
        try:
            UserProfile.objects.create(username=username,nickname=username,password=m.hexdigest(),sign=sign,info=info,email=email)
        except Exception as e:
            #数据库down了, 用户名已存在
            result = {'code': 207, 'error': 'Server is busy'}
            return JsonResponse(result)
        #make token
        token = make_token(username)
        #正常返回给前端
        result = {'code':200, 'username':username, 'data':{'token':token.decode()}}
        return JsonResponse(result)


    if request.method=='PUT':
        #http://127.0.0.1:5000/<username>/change_info
        #更新数据

        json_str=request.body
        if not json_str:
            result='please give me data'
            return  JsonResponse(result)
        json_dict=json.loads(json_str)

        #取出用户名
        # username = json_dict.get('username')
        print('用户名:',username)
        #数据库中取出用户数据
        userobj = UserProfile.objects.filter(username=username)[0]
        print(userobj)
        list_str=['sign','nickname','info']
        #取出put字段值,存到数据库
        for item in list_str:
            if item in json_dict:
                #设置数据属性
                setattr(userobj,item,json_dict[item])

        #保存结果
        userobj.save()
        result = {'code':200, 'username':request.user.username}
        return JsonResponse(result)
Example #22
0
File: views.py Project: zlz2013/zlz
def users(request,username=None):
    if request.method=='POST':
        #注册
        # print(request.body)
        json_str=request.body
        if not json_str:
            result={'code':202,'error':'Please POST data!!!'}
            return JsonResponse(result)
        #如果当前报错,请执行json_str.decode
        json_obj=json.loads(json_str)
        print(json_obj)
        username=json_obj.get('username')
        email=json_obj.get('email')
        password_1=json_obj.get('password_1')
        password_2=json_obj.get('password_2')

        if not username:
            result={'code':203,'error':'Please give me username!!!'}
            return JsonResponse(result)
        if not email:
            result={'code':204,'error':'Please give me email!!!'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            result={'code':205,'error':'Please give me password!!!'}
            return JsonResponse(result)
        if password_1!=password_2:
            result={'code':206,'error':'Please give me right password!!!'}
            return JsonResponse(result)

        #检查用户名是否存在
        old_user=UserProfile.objects.filter(username=username)
        if old_user:
            result={'code':207,'error':'The username was used!!!'}
            return JsonResponse(result)

        #密码散列
        p_m=hashlib.sha256()
        p_m.update(password_1.encode())

        #创建用户
        try:
            UserProfile.objects.create(username=username,nickname=username,email=email,password=p_m.hexdigest())
        except Exception as e:
            print("------create error is %s"%e)
            result={'code':500,'error':'Sorry,server is busy!!!'}
            return JsonResponse(result)


        token=make_token(username)
        #token编码问题,bytes串不能json dumps所以需要使用decode方法
        result={'code': 200,'username':username,'data':{'token':token.decode()}}
        return JsonResponse(result)

    elif request.method=='GET':
        #获取数据
        if username:
            # 获取指定用户数据
            users = UserProfile.objects.filter(username=username)
            print(users[0].nickname)

            if not users:
                #当前用户不存在
                return JsonResponse({'code': 200, 'error': 'The user is not existed'})
            user=users[0]
            if request.GET.keys():
                #当前请求有查询字符串
                data={}
                for key in request.GET.keys():
                    if key=='password':
                        #如果查询密码,则continue
                        continue
                    #hasattr,第一个参数为对象,第二个参数为属性字符串,-->若对象有第二个参数的属性,则返回True,反之False
                    #gatattr,参数同hasattr,若对象含有第二个参数的属性,则返回对应属性的值,反之抛出异常:AttributeError
                    if hasattr(user,key):
                        if key=='avatar':
                            #avatar属性需要调用str方法  __str__
                            data[key]=str(getattr(user,key))
                        else:
                            data[key]=getattr(user,key)
                result={'code':200,'username':username,'data':data}
            else:
                #无查询字符串即获取制定用户所有数据
                result={'code':200,'username':username,'data':{'info':user.info,'sign':user.sign,'nickname':user.nickname,'avatar':str(user.avatar)}}
            return JsonResponse(result)

        else:
            #如果没有username
            #username nickname sign info email avatar
            #{'code':200,'data':{'info':user.info}}
            all_users = UserProfile.objects.all()
            print(all_users)
            result=[]
            for _user in all_users:
                d={}
                d['username']=_user.username
                d['nickname']=_user.nickname
                d['sign']=_user.sign
                d['info']=_user.info
                d['email']=_user.email
                d['avatar']=str(_user.avatar)
                result.append(d)
            return JsonResponse({'code':200,'data':result})

    elif request.method=='PUT':
        #前端访问地址 http://127.0.0.1:5000/<username>/change_info
        #后端地址 http://127.0.0.1:8000/v1/users/<username>
        #更新用户数据

        # user=check_token(request)
        user=request.user
        # if not user:
        #     result={'code':209,'error':'The PUT need token'}
        #     return JsonResponse(result)
        json_str=request.body
        json_obj=json.loads(json_str)
        nickname=json_obj.get('nickname')
        if not nickname:
            result={'code':210,'error':'The nickname can not be none!'}
            return JsonResponse(result)

        sign=json_obj.get('sign')
        if sign is None:
            result={'code':211,'error':'The sign not in json!'}
            return JsonResponse(result)

        info = json_obj.get('info')
        if info is None:
            result={'code':212,'error':'The info not in json!'}
            return JsonResponse(result)

        if user.username!=username:
            result = {'code': 213, 'error': 'This is wrong!'}
            return JsonResponse(result)

        #修改个人信息
        user.sign=sign
        user.info=info
        user.nickname=nickname
        user.save()
        result = {'code': 200, 'username': username}
        return JsonResponse(result)
Example #23
0
def users(request, username=None):
    """
        用户模块 路由
            GET : 获取用户信息
            POST:  注册(创建用户信息)
            PUT :  修改用户信息
    :param username: 通过 url 传递的用户名
    :param request: 请求
    :return: json
    """
    if request.method == 'GET':
        print(username)
        # 取数据
        if username:
            # 具体用户数据

            # 利用 视图传参 和 查询字符串相结合 的方式,获取 某一用户信息内的 某一个字段内容
            # /v1/users/username?info=1 返回 {info:xxx}

            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExist:
                user = None

            if not user:
                # 用户不存在
                result = {"code": 208, "error": "user not exist"}
                return JsonResponse(result)

            # 判断查询字符串
            if request.GET.keys():
                data = {}
                for key in request.GET.keys():
                    if hasattr(user, key):
                        data[key] = getattr(user, key)
                result = {"code": 200, "username": username, "data": data}
                return JsonResponse(result)
            else:
                # 指定查询用户全量数据
                result = {
                    "code": 200,
                    "username": username,
                    "data": {
                        "nickname": user.nickname,
                        "info": user.info,
                        "sign": user.sign,
                        "avatar": str(user.avatar)
                    }
                }
                return JsonResponse(result)
        else:
            # 全部用户数据

            all_users = UserProfile.objects.all()
            dict_res = []

            for item in all_users:
                item_d = dict()
                item_d['username'] = item.username
                item_d['email'] = item.email
                item_d['sign'] = item.sign
                item_d['info'] = item.info
                dict_res.append(item_d)

            result = {"code": 200, "data": dict_res}
            return JsonResponse(result)

    elif request.method == 'POST':
        # 注册
        # 密码 SHA-1

        # 获取json 数据
        json_str = request.body
        if not json_str:
            # 前端异常,提交空数据
            result = {"code": 202, "error": "pl. transfer data"}
            return JsonResponse(result)

        # 反序列化 json_str
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')

        # 前端数据 验证
        if not username:
            # 用户名不存在
            result = {"code": 203, "error": "pl. transfer username"}
            return JsonResponse(result)

        if not email:
            # 邮箱不存在
            result = {"code": 204, "error": "pl. transfer email"}
            return JsonResponse(result)

        if not password_1 or not password_2:
            # 密码不存在
            result = {"code": 205, "error": "pl. transfer password"}
            return JsonResponse(result)

        if password_1 != password_2:
            # 两次输入的密码,不一致
            result = {"code": 206, "error": "The two passwords do not agree"}
            return JsonResponse(result)

        # 验证用户 是否已存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {"code": 207, "error": "The username is existed!!!"}
            return JsonResponse(result)

        # SHA-1 散列加密
        pw_sha = hashlib.sha1()
        pw_sha.update(password_1.encode())

        # 存入数据
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=pw_sha.hexdigest())
        except Exception as e:
            print('UserProfile create error is %s' % e)
            result = {"code": 207, "error": "The username is existed!!!"}
            return JsonResponse(result)

        # 根据用户名,生成 token
        token = make_token(username)
        result = {
            "code": 200,
            "username": username,
            "data": {
                "token": token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':

        # 更新数据
        user = request.user
        json_str = request.body

        if not json_str:
            # 前端是否传递数据
            result = {"code": 202, "error": "pl. transfer data"}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        nickname = json_obj.get('nickname')
        if not nickname:
            # 昵称不能为空
            result = {"code": 209, "error": "pl. transfer nickname"}
            return JsonResponse(result)

        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        user.nickname = nickname
        user.sign = sign
        user.info = info
        user.save()

        result = {"code": 200, "username": username}
        return JsonResponse(result)

    elif request.method == 'DELETE':

        user = request.user
        user.delete()

        result = {"code": 200, "data": "User Deleted..."}

        return JsonResponse(result)
Example #24
0
def users(request, username=None):

    if request.method == 'GET':
        #取数据
        if username:
            #具体用户的数据
            # /v1/users/guoxiaonao?info=1&email=1 {'info':xxx, 'email':xxx}
            try:
                user = UserProfile.objects.get(username=username)
            except UserProfile.DoesNotExist:
                user = None

            if not user:
                #用户不存在
                result = {'code': 208, 'error': 'The user is not existed'}
                return JsonResponse(result)

            #判断查询字符串
            if request.GET.keys():
                #证明有查询字符串
                data = {}
                for k in request.GET.keys():
                    #数据库中最好是有非空默认值
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                #证明指定查询用户全量数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }
                return JsonResponse(result)
        else:
            #全部用户的数据
            #UserProfile获取全部用户数据
            all_users = UserProfile.objects.all()
            res = []
            for u in all_users:
                d = {}
                d['username'] = u.username
                d['email'] = u.email
                res.append(d)
            #[{username:xx,..}, {username:xx,..}]

            result = {'code': 200, 'data': res}
            return JsonResponse(result)

    elif request.method == 'POST':
        #注册用户
        #密码需用SHA-1 hashlib.sha1() -> update -> hexdigest()

        #获取json数据
        json_str = request.body
        if not json_str:
            #前端异常提交,空数据
            result = {'code': 202, 'error': 'Please POST data'}
            return JsonResponse(result)
        #反序列化json str
        json_obj = json.loads(json_str)
        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not username:
            #用户名不存在
            result = {'code': 203, 'error': 'Please give me username'}
            return JsonResponse(result)
        if not email:
            #email不存在
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            #p1 or p2 不存在
            result = {'code': 205, 'error': 'Please give me password'}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {'code': 206, 'error': 'The password is wrong !'}
            return JsonResponse(result)

        #检查用户是否存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            #该用户已经注册
            result = {'code': 207, 'error': 'The username is existed !!! '}
            return JsonResponse(result)

        #将密码进行hash
        h_p = hashlib.sha1()
        h_p.update(password_1.encode())
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=h_p.hexdigest())
        except Exception as e:
            print('UserProfile create error is %s' % (e))
            result = {'code': 207, 'error': 'The username is existed !!! '}
            return JsonResponse(result)

        #根据用户名 生成token
        token = make_token(username)
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        #修改用户数据  /v1/users/用户名
        #前端返回的json格式{'nickaname': xxx, 'sign':xxx, 'info':xxx}
        user = request.user
        json_str = request.body
        #判断前端是否给了json串
        if not json_str:
            result = {'code': 202, 'error': 'Please give me data'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)
        nickname = json_obj.get('nickname')
        if not nickname:
            #昵称不能为空
            result = {'code': 209, 'error': 'nickname is none!'}
            return JsonResponse(result)

        #sign&info 默认值为空字符串
        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        #存
        user.sign = sign
        user.info = info
        user.nickname = nickname
        user.save()

        result = {'code': 200, 'username': username}
        return JsonResponse(result)
Example #25
0
def readers(request, readername=None):
    if request.method == 'GET':
        if readername:
            try:
                user = Reader_Profile.objects.get(readername=readername)
            except Exception as e:
                user = None
            if not user:
                result = {'code': 208, 'error': 'no user'}
                return JsonResponse(result)
            if request.GET.keys():
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        v = getattr(user, k)
                        if k == 'avatar':
                            data[k] = str(v)
                        else:
                            data[k] = v
                result = {'code': 200, 'readername': readername, 'data': data}
                return JsonResponse(result)
            else:
                result = {
                    'code': 200,
                    'readername': readername,
                    'data': {
                        'gender': user.gender,
                        'sign': user.sign,
                        'email': user.email,
                        'avatar': str(user.avatar),
                        'nickname': user.nickname
                    }
                }
                return JsonResponse(result)
        else:
            return JsonResponse({'code': 200, 'error': '我来了 GET'})

    elif request.method == 'POST':
        json_str = request.body
        if not json_str:
            result = {'code': 201, 'error': 'Please give me data'}
            return JsonResponse(result)
        # 把客户端拿取的json串转化为字符串
        json_obj = json.loads(json_str)

        readername = json_obj.get('readername')
        if not readername:
            result = {'code': 202, 'error': '用户名为空!'}
            return JsonResponse(result)
        # 判断用户名中不能含有特殊字符
        if not re.search(u'^[_a-zA-Z0-9\u4e00-\u9fa5]+$', readername):
            result = {'code': 203, 'error': '用户名不可以包含非法字符(!,@,#,$,%...)'}
            return JsonResponse(result)

        # 优先查询当前用户名是否已存在
        old_user = Reader_Profile.objects.filter(readername=readername)
        if old_user:
            result = {'code': 206, 'error': '抱歉,此用户名已经存在!'}
            return JsonResponse(result)

        # email = json_obj.get('email')
        # if not email:
        #     result = {'code':203, 'error': 'Please give me email'}
        #     return JsonResponse(result)
        password_1 = json_obj.get('password01')
        password_2 = json_obj.get('password02')
        if not password_1 or not password_2:
            result = {'code': 204, 'error': '密码为空!'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 205, 'error': '两次输入的密码不一致!'}
            return JsonResponse(result)

        # 密码处理 md5哈希/散列
        m = hashlib.md5()
        m.update(password_1.encode())
        # ======charfield 尽量避免使用 null=True
        sign = gender = email = avatar = ''
        try:
            Reader_Profile.objects.create(readername=readername,
                                          nickname=readername,
                                          password=m.hexdigest(),
                                          sign=sign,
                                          gender=gender,
                                          email=email,
                                          avatar=avatar)
        except Exception as e:
            # 数据库down了, 用户名已存在
            result = {'code': 207, 'error': '服务器繁忙...'}
            return JsonResponse(result)
        # make token
        token = make_token(readername)
        # 正常返回给前端
        result = {
            'code': 200,
            'readername': readername,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

        # result = {'code': 200, 'readername': readername, 'data': "测试一下路径成功"}
        # return JsonResponse(result)

    elif request.method == 'PUT':
        # http://127.0.0.1:5000/<readername>/change_info
        # 更新数据
        # 此头可获取前端传来的token
        # META可拿取http协议原生请求头,META 也是类字典对象,可使用
        # 字典相关方法
        # 特别注意 http头有可能被django重命名,建议百度
        # try:
        #
        # except:
        request.META.get('HTTP_AUTHORIZATION')

        user = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 209, 'error': 'Please give me json'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        if 'sign' not in json_obj:
            result = {'code': 210, 'error': '请输入签名'}
            return JsonResponse(result)
        if 'gender' not in json_obj:
            result = {'code': 211, 'error': '请输入性别'}
            return JsonResponse(result)
        if 'email' not in json_obj:
            result = {'code': 212, 'error': '请输入邮箱'}
            return JsonResponse(result)
        if 'nickname' not in json_obj:
            result = {'code': 212, 'error': '请输入昵称'}
            return JsonResponse(result)
        sign = json_obj.get('sign')
        gender = json_obj.get('gender')
        email = json_obj.get('email')
        nickname = json_obj.get('nickname')

        request.user.sign = sign
        request.user.gender = gender
        request.user.email = email
        request.user.nickname = nickname
        request.user.save()
        result = {'code': 200, 'readername': request.user.readername}
        return JsonResponse(result)

    else:
        raise KeyError
Example #26
0
def users(request, username=None):
    if request.method == 'POST':
        # 注册
        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': 'Please POST data!!'}
            return JsonResponse(result)
        # 如果当前报错,请执行 json_str = json_str.decode()
        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        email = json_obj.get('email')
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')

        if not username:
            result = {'code': 203, 'error': 'Please give me username !'}
            return JsonResponse(result)

        if not email:
            result = {'code': 204, 'error': 'Please give me email !'}
            return JsonResponse(result)

        if not password_1 or not password_2:
            result = {'code': 205, 'error': 'Please give me password !'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 206, 'error': 'Please give me right password !'}
            return JsonResponse(result)

        # 检查用户名是否存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': 'The username is used !!! '}
            return JsonResponse(result)

        # 密码散列
        p_m = hashlib.sha256()
        p_m.update(password_1.encode())

        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       email=email,
                                       password=p_m.hexdigest())
        except Exception as e:
            print('----create error is %s' % (e))
            result = {'code': 500, 'error': 'Sorry, server is busy !'}
            return JsonResponse(result)

        token = make_token(username)
        # token 编码问题 !!!! bytes串不能json dumps, 所以要执行decode方法
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        # http://127.0.0.1:5000/register
        rep = JsonResponse(result)
        rep.set_cookie(username, value=token)
        request.session[username] = token.decode()
        return rep

    elif request.method == 'GET':
        # 获取数据
        if username:
            # 获取指定用户数据
            users = UserProfile.objects.filter(username=username)
            if not users:
                # 当前username的用户不存在
                result = {'code': 208, 'error': 'The user is not existed'}
                return JsonResponse(result)
            user = users[0]
            if request.GET.keys():
                # 当前请求有查询字符串
                data = {}
                for key in request.GET.keys():
                    if key == 'password':
                        # 如果查询密码,则continue!
                        continue
                    # hasattr 第一个参数为对象, 第二个参数为 属性字符串 ->  若对象含有第二个参数的属性,则返回True,反之 False
                    # getattr 参数同hasattr, 若对象含有第二个参数的属性,则返回对应属性的值, 反之 抛出异常 AttributeError
                    if hasattr(user, key):
                        if key == 'avatar':
                            # avatar属性需要调用str方法 __str__
                            data[key] = str(getattr(user, key))
                        else:
                            data[key] = getattr(user, key)
                result = {'code': 200, 'username': username, 'data': data}
            else:
                # 无查询字符串,即获取指定用户数据
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'nickname': user.nickname,
                        'avatar': str(user.avatar)
                    }
                }

            return JsonResponse(result)
        else:
            # 没有username
            # [{username nickname sign info email avatar}]
            all_users = UserProfile.objects.all()
            result = []
            for _user in all_users:
                d = {}
                d['username'] = _user.username
                d['nickname'] = _user.nickname
                d['sign'] = _user.sign
                d['info'] = _user.info
                d['email'] = _user.email
                d['avatar'] = str(_user.avatar)
                result.append(d)
            return JsonResponse({'code': 200, 'data': result})
Example #27
0
def users(request, username=None):
    if request.method == 'GET':
        # 获取用户数据
        if username:
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                user = None
                if not user:
                    result = {'code': 208, 'error': 'no user'}
                    return JsonResponse(result)
            # 检查是否有查询字符串
            if request.GET.keys():
                # 查询指定字段
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        v = getattr(user, k)
                        if k == 'avatar':
                            data[k] = str(v)
                        else:
                            data[k] = v
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                # 全量查询,不包括密码与邮箱
                result = {'code': 200, 'username': username,
                          'data': {'info': user.info, 'sign': user.sign, 'avatar': str(user.avatar),
                                   'nickname': user.nickname}}
                return JsonResponse(result)
        else:
            return JsonResponse({'code': 200, 'error': 'test'})
    elif request.method == 'POST':
        # 创建用户数据
        # print(request.body)
        json_str = request.body
        if not json_str:
            result = {'code': 201, 'error': 'Data Is Null'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        if not username:
            result = {'code': 202, 'error': 'username is null'}
            return JsonResponse(result)
        email = json_obj.get('email')
        if not email:
            result = {'code': 203, 'error': 'email is null'}
            return JsonResponse(result)
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not password_1 or not password_2:
            result = {'code': 204, 'error': 'password is null'}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {'code': 205, 'error': 'password_1 is not same as password_2'}
            return JsonResponse(result)

        # 检查当前数据库是否有此用户
        user = UserProfile.objects.filter(username=username)
        if user:
            result = {'code': 206, 'error': 'your username is already existed!'}
            return JsonResponse(result)
        # 处理密码 md5/哈希/散列
        m = hashlib.md5()
        m.update(password_1.encode())
        # 个人签名/个人信息 可以为空
        sign = info = ''
        try:
            UserProfile.objects.create(
                username=username,
                nickname=username,
                password=m.hexdigest(),
                email=email,
                sign=sign,
                info=info
            )
        except Exception as e:
            result = {'code': 207, 'error': 'Server is busy, please try again'}
            return JsonResponse(result)

        # 生成token
        token = make_token(username)
        # 正常返回给前端
        result = {'code': 200, 'username': username, 'data': {'token': token.decode()}}
        return JsonResponse(result)
    elif request.method == 'PUT':
        # http://127.0.0.1:5000/<username>/change_info
        # 修改个人信息, 更新用户数据
        # 获取前端传来的token
        # META可拿取http协议原生头,META也是类字典对象,可使用字典相关方法
        # 特别注意 http头有可能被django重命名
        user = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 209, 'error': 'please give me token'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        if 'sign' not in json_obj:
            result = {'code': 210, 'error': 'no sign'}
            return JsonResponse(result)
        if 'info' not in json_obj:
            result = {'code': 211, 'error': 'no info'}
            return JsonResponse(result)
        sign = json_obj.get('sign')
        info = json_obj.get('info')
        request.user.sign = sign
        request.user.info = info
        request.user.save()
        result = {'code': 200, 'username': request.user.username}
        return JsonResponse(result)

    else:
        raise
Example #28
0
def users(request, username=None):
    if request.method == 'GET':
        #获取用户数据
        if username:
            #/v1/users/<username>
            #拿指定用户数据
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                user = None
            if not user:
                result = {'code': 208, 'error': 'no user'}
                return JsonResponse(result)
            #检查是否有查询字符串
            if request.GET.keys():
                #查询指定字段
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        v = getattr(user, k)
                        if k == 'avatar':
                            data[k] = str(v)
                        else:
                            data[k] = v
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                #全量查询【password email 不给】
                result = {
                    'code': 200,
                    'username': username,
                    'data': {
                        'info': user.info,
                        'sign': user.sign,
                        'avatar': str(user.avatar),
                        'nickname': user.nickname
                    }
                }
                return JsonResponse(result)

            # return JsonResponse({'code': 200, 'error':'wolaila GET %s'%(username)})
        else:
            #/v1/users
            return JsonResponse({'code': 200, 'error': 'wolaile GET'})

    elif request.method == 'POST':
        #此功能模块异常码  201 开始
        #request.POST  只能拿表单post提交的数据
        #创建用户
        #前端注册页面地址  http://127.0.0.1:5000/register
        # print(request.body)
        # dict = json.loads(request.body)
        # import jwt
        # jwt.encode()
        json_str = request.body
        if not json_str:
            result = {'code': 201, 'error': 'Please give me data'}
            return JsonResponse(result)
        #把客户端拿取的json串转化为字符串
        json_obj = json.loads(json_str)

        username = json_obj.get('username')
        if not username:
            result = {'code': 202, 'error': 'Please give me username'}
            return JsonResponse(result)

        email = json_obj.get('email')
        if not email:
            result = {'code': 203, 'error': 'Please give me email'}
            return JsonResponse(result)
        password_1 = json_obj.get('password_1')
        password_2 = json_obj.get('password_2')
        if not password_1 or not password_2:
            result = {'code': 204, 'error': 'Please give me password'}
            return JsonResponse(result)

        if password_1 != password_2:
            result = {'code': 205, 'error': 'Your password not same'}
            return JsonResponse(result)
        #优先查询当前用户名是否已存在
        old_user = UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 206, 'error': 'Your username is already existed'}
            return JsonResponse(result)
        #密码处理 md5哈希/散列
        m = hashlib.md5()
        m.update(password_1.encode())
        #======charfield 尽量避免使用 null=True
        sign = info = ''
        try:
            UserProfile.objects.create(username=username,
                                       nickname=username,
                                       password=m.hexdigest(),
                                       sign=sign,
                                       info=info,
                                       email=email)
        except Exception as e:
            #数据库down了, 用户名已存在
            result = {'code': 207, 'error': 'Server is busy'}
            return JsonResponse(result)
        #make token
        token = make_token(username)
        #正常返回给前端
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        #http://127.0.0.1:5000/<username>/change_info
        #更新数据
        #此头可获取前端传来的token
        #META可拿取http协议原生请求头,META 也是类字典对象,可使用
        #字典相关方法
        #特别注意 http头有可能被django重命名,建议百度
        request.META.get('HTTP_AUTHORIZATION')

        user = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 209, 'error': 'Please give me json'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        if 'sign' not in json_obj:
            result = {'code': 210, 'error': 'no sign'}
            return JsonResponse(result)
        if 'info' not in json_obj:
            result = {'code': 211, 'error': 'no info'}
            return JsonResponse(result)
        sign = json_obj.get('sign')
        info = json_obj.get('info')

        request.user.sign = sign
        request.user.info = info
        request.user.save()
        result = {'code': 200, 'username': request.user.username}
        return JsonResponse(result)

    else:
        raise KeyError
Example #29
0
def users(request, username=None):
    if request.method == 'GET':
        if username:
            try:
                user = models.UserProfile.objects.get(username=username)
            except models.UserProfile.DoesNotExist:
                user = None
            if not user:
                result = {'code': 208, 'error': 'The user not exist'}
                return JsonResponse(result)
            if request.GET.keys():
                data = {}
                for k in request.GET.keys():
                    if hasattr(user, k):
                        data[k] = getattr(user, k)
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
            else:
                data = {
                    'info': user.info,
                    'sign': user.sign,
                    'nickname': user.nickname,
                    'avatar': str(user.avatar),
                    'email': user.email
                }
                result = {'code': 200, 'username': username, 'data': data}
                return JsonResponse(result)
        else:
            users = models.UserProfile.objects.all()
            res = []
            for u in users:
                data = {}
                data['username'] = u.username
                data['email'] = u.email
                res.append(data)
            result = {'code': 200, 'data': res}
            return JsonResponse(result)

    elif request.method == 'POST':
        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': 'Please Post Data'}
            return JsonResponse(result)
        json_obj = json.loads(json_str)
        username = json_obj.get("username")
        email = json_obj.get("email")
        password_1 = json_obj.get("password_1")
        password_2 = json_obj.get("password_2")
        if not username:
            result = {'code': 203, 'error': 'Please give me username'}
            return JsonResponse(result)
        if not email:
            result = {'code': 204, 'error': 'Please give me email'}
            return JsonResponse(result)
        if not password_1 or not password_2:
            result = {'code': 205, 'error': 'Please give me Password'}
            return JsonResponse(result)
        if password_1 != password_2:
            result = {'code': 206, 'error': 'Password not equal'}
            return JsonResponse(result)

        old_user = models.UserProfile.objects.filter(username=username)
        if old_user:
            result = {'code': 207, 'error': 'The username is existed!!!'}
            return JsonResponse(result)
        h_p = hashlib.sha1()
        h_p.update(password_1.encode())
        try:
            models.UserProfile.objects.create(username=username,
                                              nickname=username,
                                              email=email,
                                              password=h_p.hexdigest())
        except Exception as e:
            print("UserProfile create error is %s" % (e))
            result = {'code': 207, 'error': 'The username is existed!!!'}
            return JsonResponse(result)

        token = make_token(username)
        result = {
            'code': 200,
            'username': username,
            'data': {
                'token': token.decode()
            }
        }
        return JsonResponse(result)

    elif request.method == 'PUT':
        # users=models.UserProfile.objects.filter(username=username)
        # if not users:
        #     result={'code':208,'error':'The user is not exist'}
        #     return JsonResponse(result)
        user = request.user
        json_str = request.body
        if not json_str:
            result = {'code': 202, 'error': 'Please Put Data'}
            return JsonResponse(result)

        json_obj = json.loads(json_str)

        nickname = json_obj.get("nickname")
        if not nickname:
            result = {'code': 209, 'error': "The nickname is none!"}
            return JsonResponse(result)

        sign = json_obj.get('sign', '')
        info = json_obj.get('info', '')

        # 存
        user.sign = sign
        user.info = info
        user.nickname = nickname
        user.save()
        result = {'code': 200, 'username': username}
        return JsonResponse(result)