Django(二)精美博客搭建(10)实现关于我页及文章详情页上一篇/下一篇bug解决

本篇博客主要介绍了如何在Django项目中实现‘关于我’页面,以及解决文章详情页上一篇/下一篇跳转的bug。在views.py中添加了相应逻辑,并在templates/article/info.html中调整了页面取值。同时,对于‘关于我’页面,通过配置urls.py、views.py和about.html完成了界面展示。
摘要由CSDN通过智能技术生成

前言

本章主要讲述 【关于我】 页面的具体实现,以及之前咱们遗留的 【文章详情页上一篇/下一篇跳转bug的解决】

  • ps:那【关于我】界面的话,就很简单,都是写死的数据,只需要配下路由,自己简单将前端文案改一下就行了
    这里我主要讲下【上一篇/下一篇】bug解决思路

环境:

  • Pycharm
  • python3.6
  • mysql 5.7
  • django 2.0.13


一、新功能项目概览

在这里插入图片描述
在这里插入图片描述



二、上一篇/下一篇bug解决

1、article/views.py

  • 直接在原来的文章详情视图函数中添加逻辑,我在代码里面写了注释,大家可以详细看下注释里标的【第3点】

在这里插入图片描述

在这里插入图片描述

from django.shortcuts import render

# Create your views here.
from article.models import Article

"""
    文章相关视图函数
"""


def article_detail(request):
    """
    通过id查看文章详情
    :param request:
    :return:
    """
    # 拿到当前文章id
    article_id = request.GET.get('id')
    # print("当前文章id类型:", type(article_id))
    # 根据id拿到当前文章
    current_article = Article.objects.get(pk=article_id)

    # 1、浏览量同步新增:点击一次,浏览量同步加1
    current_article.click_num += 1
    current_article.save()

    # 2、查询相关文章:即对应标签里的前6条数据
    tags_list = current_article.tags.all()  # 首先拿到标签列表
    # 定义【相关文章】list
    about_article_list = []
    for tag in tags_list:
        # 遍历拿到该文章对应标签里的文章列表
        for about_article in tag.article_set.all():
            # 文章不存在list里且少于6篇,则放到list中
            if about_article not in about_article_list and len(about_article_list) < 6:
                about_article_list.append(about_article)
    # print("about_article_list:", about_article_list)

    # 3、拿到上一篇/下一篇文章对象
    all_article = Article.objects.all()  # 拿到所有文章
    print("all_article:", all_article)
    previous_index = 0
    next_index = 0
    previous_article = None
    next_article = None
    # enumerate将其组成一个索引序列,利用它可以同时获得索引和值
    for index, article in enumerate(all_article):
        # 当index为0,即当前文章为第一篇,第一篇文章没有上一篇,默认索引为0,下一篇则为index+1
        if index == 0:
            previous_index = 0
            next_index = index + 1
        # 当index为总长度-1时,即当前文章为最后一篇,上一篇为index-1,下一篇为当前文章
        elif index == len(all_article) - 1:
            previous_index = index - 1
            next_index = index
        # 否则,当index有上一篇/下一篇时,上一篇为index-
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M1kasal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值