Example #1
0
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())
Example #2
0
def logout(request):
    login_user = helper.getLoginInfo(request)
    if login_user:
        # 从session中删除登录信息
        del request.session['login_user']
        # request.session.clear()
    return redirect('/')
Example #3
0
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})
Example #4
0
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())
Example #5
0
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())
Example #6
0
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})
Example #7
0
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())
Example #8
0
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())
Example #9
0
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})
Example #10
0
File: urls.py Project: sjtuzyl/Read
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())
Example #11
0
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})
Example #12
0
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())
Example #13
0
def userInfo(request):
    login_user = helper.getLoginInfo(request)
    if request.method == 'POST':
        pass
    return render(request, 'user/userInfo.html', locals())
Example #14
0
def logout(request):
    login_user = helper.getLoginInfo(request)
    if login_user:
        del request.session['login_user']
        return redirect('/')