def get(self, request): response = CommonResponse() response.data = {'order_bill_status_list': {}} order_bill_status_list = OrderStatusAndBillStatus.objects.all() for item in order_bill_status_list: response.data['order_bill_status_list'][ item.id] = item.status_content response.msg = '获取订单和钱款信息成功' return Response(response.get_dic())
def post(self, request): print('开始验证') response = CommonResponse() check_form = LoginCheckForm(request.POST) if check_form.is_valid(): # 获取客户端传来的token client_token = request.token print(client_token) # print('token', client_token) # 建立redis连接 conn = redis.Redis(connection_pool=POOL) # 获取服务器端token try: keys = conn.keys() keys = [str(key, encoding='utf-8') for key in keys] # print('client_token', client_token) # print('keys', keys) # print(keys[3]) # print('status', client_token in keys) # print() except Exception as e: print(e) keys = None # 如果存在token,就不再验证用户密码,直接通过了 if client_token in keys: response.status = 200 response.msg = '登录成功' response.data = {'salt_cookie': client_token} # 如果客户端或服务器端有一方没有token的时候,直接根据手机号和密码登录 elif (not client_token) or (client_token not in keys): telephone = request.POST.get('telephone', None) passwd = request.POST.get('passwd', None) print(telephone) print(passwd) if not (telephone and passwd): response.msg = '登录失败' else: user = models.User.objects.filter(telephone=telephone, password=passwd).first() # 如果查询成功,表示信息正确,生成token值 # if isinstance(user, models.User): if user: # 设置返回json的状态 response.status = 200 response.msg = '登录成功' # 生成token的函数做成类 token_api = CheckUserToken() token_str = token_api.get_token_str(telephone) # 并设置过期时间,放在redis中 conn = redis.Redis(connection_pool=POOL) # 在redis保存什么数据? conn.set(token_str, user.id, ex=86400) response.data = {'salt_cookie': token_str} else: response.msg = '账户或密码错误,请重新登录' # 客户端和服务器都带有token数据时,做校验,如果校验失败,不在验证用户,跳转登录信息 else: response.msg = '登录失败' else: response.status = 101 response.msg = '注册失败,信息格式不正确' return Response(response.get_dic())