Exemplo n.º 1
0
def Poem_Detail(request, poem_id):
    comment_form = CommentsForm()
    # 根据poem_id获取的目标诗对象
    poem = Poems.objects.get(id=poem_id)
    author = Author.objects.get(id=poem.author_id)
    # 诗人所有诗词
    author_poems = author.poems_set.all()[:6]
    # 所以评论
    comments = poem.comments_set.all()
    # 评论数
    nums = comments.count()
    praise_num = Praise.objects.filter(poem=poem).count()
    try:
        page = request.GET.get('page', 1)
    except PageNotAnInteger:
        page = 1
    # 这里的数字表示每一页有几个实例
    p = Paginator(comments, 4, request=request)
    comments = p.page(page)
    # 点赞状态标识
    praise_statue = 0
    if request.user.is_authenticated():
        statue = Praise.objects.filter(user=request.user, poem=poem)
        if statue:
            praise_statue = 1
    #拼音功能
    result = []
    temp = []
    pingyin_statue = request.GET.get('pingyin_statue', '')
    if pingyin_statue:
        from xpinyin import Pinyin
        words = poem.content

        p = Pinyin()
        for i in words.split('\n'):
            # 生成拼音
            a = p.get_pinyin(i, show_tone_marks=True).split('-')
            for j in a:
                j = j + '&nbsp' * (6 - len(j))
                temp.append(j)
            result.append(''.join(temp) + '\n')
            result.append(i + '\n')
            temp = []

    context = {
        'poem': poem,
        'author': author,
        'author_poems': author_poems,
        'comments': comments,
        'comment_form': comment_form,
        'nums': nums,
        'praise_num': praise_num,
        'praise_statue': praise_statue,
        'result': result,
        'pingyin_statue': pingyin_statue
    }
    return render(request, 'poem_detail.html', context=context)