Django针对上一篇和下一篇文章标题的实现逻辑

1、要求显示效果

2、前端html内容

<div>
    <nav aria-label="...">
  <ul class="pager">
    <li><a href="/blog/detail/{{ previous_article.article_id }}">上一篇:{{ previous_article.title }}</a></li>
    <li><a href="/blog/detail/{{ next_article.article_id }}">下一篇:{{ next_article.title }}</a></li>
  </ul>
</nav>
</div>

3、具体实现逻辑:

#根据id获取博客详细信息;
def get_detail_page(request,article_id):
    all_article = Article.objects.all()
    curr_article = None
    previous_index = 0
    next_index = 0
    previous_article = None
    next_article = None

    #对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),
    # enumerate将其组成一个索引序列,利用它可以同时获得索引和值
    for index,article in enumerate(all_article):
        if index == 0:
            previous_index = 0
            next_index = index +1
        elif index == len(all_article) - 1:
            previous_index = index-1
            next_index = index
        else:
            previous_index = index -1
            next_index = index+1

        #通过id判断当前记录;
        if article.article_id == article_id:
            curr_article = article
            previous_article = all_article[previous_index]
            next_article = all_article[next_index]
            break

    #通过换行符拆分成记录列表;
    #影响的结果,需传递json参数;
    section_list = curr_article.content.split('\n')
    return render(request,'blog/detail.html',
                  {
                      'curr_article':curr_article,
                      'section_list':section_list,
                      'previous_article': previous_article,
                      'next_article': next_article
                  }
            )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值