def process_request(self, request): if request.path in self.white_list: return None uid = request.session.get('uid') if not uid: return render_json(None, error.USER_NOT_LOGIN) try: user = User.objects.get(pk=uid) except User.DoesNotExist as e: return render_json(None, error.USER_DOES_NOT_EXIST) request.user = user return None
def upload_avatar(request): '''头像上传''' # 1. 接收用户上传的头像 # 2. 定义用户头像名称 # 3. 异步将头像上传七牛 # 4. 将 URL 保存入数据库 file = request.FILES.get('avatar') if file: save_upload_file(request.user, file) return render_json(None) else: return render_json(None, error.FILE_NOT_FOUND)
def superlike(request): user = request.user # 在swipe中创建一条记录. sid = request.POST.get('sid') # 超级喜欢加7分 key = keys.HOT_RANK_KEY % sid rds.zincrby(config.RANK_KEY, config.SUPERLIKE_SCORE, key) flag = logic.superlike(user.id, int(sid)) if flag: return render_json(data={'matched': True}) return render_json(data={'matched': False})
def submit_vcode(request): phone = request.POST.get('phone') vcode = request.POST.get('vcode') # 从缓存中取出数据 cached_vcode = cache.get(keys.VCODE_KEY % phone) if vcode == cached_vcode: user, _ = User.objects.get_or_create(phonenum=phone, defaults={'nickname': phone}) request.session['uid'] = user.id return render_json(data=user.to_dict()) else: return render_json(code=errors.VCODE_ERROR, data='验证码错误')
def submit_phone(request): """获取短信验证码""" if not request.method == "POST": '''每次都可以去lib里面的http调用render_json帮助返回json 这个函数要传一个msg和一个状态码code ''' return render_json("request error",code=errors.REQUEST_ERROR) else: # 从post请求里面拿到手机号,将手机号交给send_sms函数去发短信. phone = request.POST.get('phone') result, msg = sms.send_sms(phone) print(result) return render_json(msg)
def login(request): '''短信验证登录''' phonenum = request.POST.get('phonenum') vcode = request.POST.get('vcode') if check_vcode(phonenum, vcode): #获取用户 user, created = User.objects.get_or_create(phonenum=phonenum) #记录用户状态 request.session['uid'] = user.id return render_json(user.to_dict(), 0) else: return render_json(None, error.VCODE_ERROR)
def process_request(self, request): # 如果当前 url 在白名单内,直接忽略 if request.path in self.URL_WHITE_LIST: return # 检查用户是否登录 uid = request.session.get('uid') if uid: try: request.user = User.objects.get(id=uid) except User.DoesNotExist: return render_json('用户不存在', errors.USER_NOT_EXIST) else: return render_json('用户未登录', errors.LOGIN_REQUIRED)
def login(request): ''' :param request: :return: ''' phonenum = request.POST.get('phonenum') vcode = request.POST.get('vcode') if check_vcode(phonenum, vcode): user, created = User.objects.get_or_create(phonenum=phonenum) request.session['uid'] = user.id return render_json(user.to_dict(), 0) else: return render_json(None, VCODE_ERROR)
def upload_avatar(request): '''头像上传''' ''' 1.get user avatar 2.rename user avatar name 3.upload avatar to qiniu 4.save url to redis ''' file = request.FILES.get('avatar') if file: save_upload_file(request.user, file) return render_json(None) else: return render_json(None, error.FILE_NOT_FOUND)
def process_request(self, request): print(request.path) if request.path in self.URL_WHITE_LIST: return uid = request.session.get('uid') if not uid: return render_json('user not login', errors.USER_NOT_LOGIN.code) try: user = User.get(id=uid) request.user = user except User.DoesNotExist: return render_json('no this user', errors.NO_THIS_USER.code)
def process_request(self, request): if request.path in self.URL_WHITE_LIST: return uid = request.session.get('uid') if uid: try: user = User.get(id=uid) request.user = user return except User.DoesNotExist: return render_json('用户不存在', errors.UserNotExist.code) else: return render_json('请登录', errors.LoginRequired.code)
def login(request): '''短信验证登录''' phonenum = request.POST.get('phonenum') vcode = request.POST.get('vcode') if not check_vcode(phonenum, vcode): # 获取用户 user, created = User.objects.get_or_create(phonenum=phonenum) # 记录登录状态 request.session['uid'] = user.id pre_rcmd(user) return render_json(user.to_dict()) else: return render_json(None, error.OK)
def process_request(self, request): # 如果当前 url 在白名单内,直接忽略 if request.path in self.URL_WHITE_LIST: return # 检查用户是否登录 uid = request.session.get('uid') if uid: try: request.user = User.get(id=uid) except User.DoesNotExist: return render_json('用户不存在', errors.UserNotExist.code) else: return render_json('用户未登录', errors.LoginRequired.code)
def modify_profile(request): '''修改个人资料''' form = ProfileForm(request.POST) if form.is_valid(): user = request.user user.profile.__dict__.update(form.cleaned_data) user.profile.save() #修改缓存 key = 'Profile-%s' % user.id cache.set(key, user.profile.to_dict()) return render_json(None) else: return render_json(form.errors, error.PROFILE_ERROR)
def verify_phone(request): ''' 验证手机号 :param request: :return: ''' phone_num = request.POST.get('phone_num') if utils.is_phone_num(phone_num.strip()): if logic.send_verify_code(phone_num): return render_json() else: return render_json(code=errors.PhoneNumError.code) return render_json(code=errors.PHONE_NUM_ERR)
def swiper_like(request): target_id = int(request.POST.get('target_id')) # source_id = int(request.POST.get('source_id')) source_id = request.user.id if target_id == source_id: return render_json({}, '禁止喜欢自己', CODE_DISABLE_LIKE_SELF) Swiper.swipe('like', source_id=source_id, target_id=target_id) # 检查被滑动者,是否喜欢过滑动者 if Swiper.is_liked_someone(source_id=target_id, target_id=source_id): Friend.make_friends(target_id, source_id) return render_json(None)
def get_profile(request): """"获取个人资料""" user = request.user # 先从缓存中获取数据 profile_dict = cache.get(keys.PROFILE_DICT % user.id) # 如果能获取到就返回数据 if profile_dict is not None: print('get profile from cache') return render_json(profile_dict) # 获取不到就从数据库中获取,并添加到缓存中. profile_dict = user.profile.to_dict() print('get profile dict from db') cache.set(keys.PROFILE_DICT % user.id, profile_dict, 86400 * 7) return render_json(profile_dict)
def process_exception(self, request, exception): """异常处理""" if isinstance(exception, error.LogicError): #处理异常 err_logger.error((f'LogicError:{exception}')) #处理日志 return render_json(None, exception.code)
def modify_user(request: HttpRequest): '''modify user info''' user_form = UserForm(request.POST) if not user_form.is_valid(): raise error.UserHttpBad() return render_json(user_form.cleaned_data)
def show_profile(request): '''show profile detail''' user = request.user profile = user.profile profile.save() return render_json(profile.to_dict())
def dislike(request): '''不喜欢''' sid = int(request.POST.get('sid')) Swiped.dislike(request.user.id, sid) logic.add_swipe_score(sid, 'dislike') rds.srem('RCMD-%s' % request.user.id, sid) return render_json(None)
def superlike(request): '''超级喜欢''' sid = int(request.POST.get('sid')) is_matched = logic.superlike_someone(request.user, sid) logic.add_swipe_score(sid, 'superlike') rds.srem('RCMD-%s' % request.user.id, sid) return render_json({'is_matched': is_matched})
def edit_profile(request): """修改个人资料""" user = request.user form = ProfileForm(request.POST) if form.is_valid(): profile = form.save( commit=False ) # 继承了ModelForm, form相当于Model对象, commit=False 先不提交, 返回一个profile对象 profile.id = user.id profile.save() # 这里save()相当于更新该id对应数据 # 更新到缓存 key = keys.PROFILE_KEY % user.id cache.set(key, profile.to_dict(), 86400 * 14) return render_json(data=profile.to_dict()) return render_json(code=errors.PROFILE_ERR, data=form.errors)
def upload_avatar(request): '''头像上传''' user = request.user avatar = request.FILES.get('avatar') # 取出文件对象 logics.upload_avatar.delay(user, avatar) return render_json(None)
def upload_avatar(request): '''上传个人形象''' avatar = request.FILES.get('avatar') filepath, filename = save_upload_file(request.user, request.user, avatar) # 上传个人头像到七牛云 「未测试」 # upload_avatar_to_qn(filepath, filename) return render_json(None)
def wrap(request): user = request.user if user.vip.has_perm(perm_name): response = view_func(request) return response else: return render_json(None, error.NOT_HAS_PERM)
def user_avatar(request): # 上传后保存的文件名 file_name = f'avatar-{request.user.id}' # 上传后保存的全路径 file_path = f'{settings.BASE_DIR}/static/{file_name}' # 取得用户上传得图片 f = request.FILES['avatar'] # with 上下文管理器 with open(file_path, 'wb+') as destination: for chunk in f.chunks(): destination.write(chunk) print('save ok.') user_id = request.user.id # 将图片上传到七牛云 # upload_qiniu(file_name, file_path, user_id) # 使用celery异步操作 upload_qiniu.delay(file_name, file_path, user_id) return render_json(None)
def get_profile(request): """获取个人资料""" uid = request.session.get('uid') user = User.objects.get(id=uid) profile = user.profile return render_json(profile.to_string())
def cart_selected(request): user = request.user cartid = user.cart.id cart_select(cartid) cart = cache.get('cartid') return render_json(cart)
def submit_phone(request): '''提交手机号,发送验证码''' # phone = request.POST.get('phone') phone = request.GET.get('phone') print(phone) send_sms(phone) return render_json(None)