def toIndex(request): # 加载所有的分类 # annotate 为每个tag对象增加一个字段(Count('art') 统计每种类型下文章数量) tags = Tag.objects.annotate(arts=Count('art')).filter(arts__gt=1) # locals() 将当前函数的局部变量转成字典的key-value # 如: # {'request': request, 'tags': tags} # 读取分类id tag_id = request.GET.get('tag') # 加载所有文章 if tag_id: tag_id = int(tag_id) arts = Art.objects.filter(tag_id=tag_id) # exclude() 排除条件为真的数据 else: arts = Art.objects.all() # 将文章进行分页处理 paginator = Paginator(arts, 10) # 分页器 page = request.GET.get('page') page = int(page) if page else 1 # 读取请求参数中page参数,如果没有,默认为1 pager = paginator.page(page) # 获取第一页的数据 # 获取登录用户的信息 login_user = helper.getLoginInfo(request) return render(request, 'index.html', locals())
def logout(request): login_user = helper.getLoginInfo(request) if login_user: # 从session中删除登录信息 del request.session['login_user'] # request.session.clear() return redirect('/')
def queryQDState(request, id): login_user = helper.getLoginInfo(request) if not login_user: return JsonResponse({'msg': '请先登录', 'code': 101}) uid = login_user.get('id') # print(uid) if rd.hexists('qdArt', uid): # 一个用户抢两本书,查询最新的id的抢读状态,而不是之前抢读的状态 qdId = rd.hget('qdArt', uid) # 已抢的书id, qdId和id可能不一样 print(qdId) art = Art.objects.get(pk=id) print(art.title) return JsonResponse({ 'msg': '抢读成功', 'code': 200, 'art': { 'title': art.title, 'author': art.author, } }) if rd.hlen('qdArt') < 5: return JsonResponse({'msg': '正在抢读', 'code': 201}) else: return JsonResponse({'msg': '抢读失败', 'code': 300})
def toIndex(request): tags1 = Tag.objects.all() # locals将当前函数的局部变量转成字典的key-value结构 #{'request':request,'tags':tags} tags = [] for tag in tags1: #判断该类型中是否有文章,如果有就添加进tags if Art.objects.filter(tag=tag): tags.append(tag) #annotate为每个tag对象增加一个字段(Count('art) 统计每种类型下文章数据) # #读取分类id tag_id = request.GET.get('tag') if tag_id: tag_id = int(tag_id) arts = Art.objects.filter(tag_id=tag_id) #exclude排除条件为真的数据 else: arts = Art.objects.all() # #加载所有文章 # arts = Art.objects.all() #将文章进行分页处理 paginator = Paginator(arts,8) #分页器 page = request.GET.get('page') page = int(page) if page else 1 # 读取请求参数中page参数,如果没有,默认为1 pager = paginator.page(page) # 获取当前页的数据 #获取登录用户的信息 login_user= helper.getLoginInfo(request) return render(request,'index.html',locals())
def toIndex(request): # 加载所有的分类 # tags = Tag.objects.all() # annotate为每个tag对象增加一个字段(Count('art'))统计每种类型下文章数量 tags = Tag.objects.annotate(arts=Count('art')).filter(arts__gte=1) # 读取分类id tag_id = request.GET.get('tag') # 加载所有文章 if tag_id: tag_id = int(tag_id) # filter()过滤 # exclude()排除 arts = Art.objects.filter(tag_id=tag_id) else: arts = Art.objects.all() # 将文章进行分页处理 # 分页器 paginator = Paginator(arts, 10) page = request.GET.get('page') # 读取请求参数中的page参数,没有则默认为1 page = int(page) if page else 1 # 获取第page页的数据 pager = paginator.page(page) # 获取登录用户的信息 login_user = helper.getLoginInfo(request) # locals()是将当前函数的局部变量转成字典的key-value # {'request':request,'tags':tags} return render(request, 'index.html', locals())
def qdArt(request, id): #获取当前登录的用户信息 login_user = helper.getLoginInfo(request) if not login_user: return JsonResponse({'msg': '请先登录', 'code': 101}) tasks.qdTask.delay(login_user.get(id), id) #延迟异步执行 return JsonResponse({'msg': '正在抢读', 'code': 201})
def show(request, id): login_user = helper.getLoginInfo(request) articl = Articl.objects.filter(pk=id).first() # 阅读排行 redis_.incrTopRank(id) readTopRank = redis_.getReadTopRank(5) return render(request, 'articl/show.html', locals())
def show(request, id): # 阅读 art_id 的文章 login_user = helper.getLoginInfo(request) # 读取session登录的信息 art = Art.objects.get(pk=id) # 写入到阅读排行中(Redis->ReadTopRank) redis_.incrTopRank(id) readTopRank = redis_.getReadTopRank(5) # [(<>, score)] return render(request, 'art/show.html', locals())
def qdArt(request, id): # 获取当前登录用户的信息 login_user = helper.getLoginInfo(request) if not login_user: return JsonResponse({'msg': '请先登录', 'code': 101}) # # 判断当前用户是否已抢过 # uid = login_user.get('id') # if rd.hexists('qdArt', uid): # return JsonResponse({'msg': '您已抢过,只能抢一本,不能继续', # 'code': 205}) tasks.qdTask.delay(login_user.get('id'), id) # 延迟异步执行 return JsonResponse({'msg': '正在抢读', 'code': 201})
def toIndex(request): # 加载所有分类 tags = Tag.objects.all() # locals()将当前函数的局部变量转变为字典的k-v # 读取分类id tag_id = request.GET.get('tag') if tag_id: tag_id = int(tag_id) articls = Articl.objects.filter(tag_id=tag_id) else: tag_id = 0 articls = Articl.objects.all() #将文章分页 paginator = Paginator(articls, 10) page = int(request.GET.get('page', 1)) pager = paginator.page(page) # 获取登录用户信息 login_user = helper.getLoginInfo(request) return render(request, 'index.html', locals())
def queryQDState(request, id): login_user = helper.getLoginInfo(request) if not login_user: return JsonResponse({'msg': '请先登录', 'code': 101}) uid = login_user.get('id') if rd.hexists('qdArticl', uid): # 一个用户抢两本书,查询最新的id的抢读状态 qdId = rd.hget('qdArticl', uid) articl = Articl.objects.get(pk=id) return JsonResponse({ 'msg': '抢读成功', 'code': 200, 'articl': { 'title': articl.title, 'author': articl.author, } }) if rd.hlen('qdArticl') < 5: return JsonResponse({'msg': '再试一次', 'code': 201}) else: return JsonResponse({'msg': '抢读失败', 'code': 300})
def show(request, id): # 阅读 art_id 的文章 login_user = helper.getLoginInfo(request) # 读取session登录的信息 art = Art.objects.get(pk=id) return render(request, 'art/show.html', locals())
def userInfo(request): login_user = helper.getLoginInfo(request) if request.method == 'POST': pass return render(request, 'user/userInfo.html', locals())
def logout(request): login_user = helper.getLoginInfo(request) if login_user: del request.session['login_user'] return redirect('/')