Django(二)精美博客搭建(9)实现文章详情页

本文档详细介绍了如何在Django项目中搭建文章详情页,包括在`urls.py`和`views.py`中进行配置,以及在`templates`模块中创建`info.html`并添加`css`样式。环境为Pycharm、python3.6、mysql 5.7和django 2.0.13。文章提到详情页的【上一篇/下一篇】功能尚未实现,后续将另作补充。
摘要由CSDN通过智能技术生成

前言

本章主要讲述 【文章详情页】 的实现

ps:关于详情界面,【上一篇/下一篇】模块,还有点问题,本篇先不实现,等我调通了会另外补一篇blog- -


环境:

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


一、新功能项目概览

在这里插入图片描述

在这里插入图片描述



二、article模块具体实现

1、urls.py

# 文章详情
path('detail', article_detail, name='detail'),

在这里插入图片描述


2、views.py

  • 该views中定义所有与文章相关的视图函数

在这里插入图片描述

from django.shortcuts import render

# Create your views here.
from article.models import Article
"""
    文章相关视图函数
"""


def article_detail(request):
    """
    查看文章详情
    :param request:
    :return:
    """
    id = request.GET.get('id')  # 拿到文章id
    # 根据id拿到文章
    article = Article.objects.get(pk=id)

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

    # 2、查询相关文章:即对应标签里的前6条数据
    tags_list = 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)
    return render(request, 'article/info.html',
                  context={
   'article': article, 'about_article_list': about_article_list})


三、templates模块具体实现

1、新增info.html

  • 之前说过了,不同的应用相关的页面,我们分别维护在不同的文件夹里面,让整个项目的层级结构更加清晰;所以我们在templates中新增article文件夹,然后在article下新建文章详情界面

在这里插入图片描述

{
   % extends 'base.html' %}
{
   % load staticfiles %}

{
   % block title %}
    博客详情
{
   % endblock %}

{
   # css样式部分 #}
{
   % block mycss %}
    {
   # 引进样式info.css ,m.css   #}
    <link href="{% static 'css/info.css' %}" rel="stylesheet">
    <link href="{% static 'css/m.css' %}" rel="stylesheet">
{
   % endblock %}

{
   # 内容部分 #}
{
   % block content %}
    <div class="infos">
        <div class="newsview">
            {
   #  内嵌title  #}
            <h2 class="intitle">您现在的位置是:<a href="{% url 'index' %}">网站首页</a> > <a
                    href="{% url 'article:detail' %}?id={
   { article.id }}">文章详情</a></h2>
            <h3 class="news_title">{
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

M1kasal

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

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

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

打赏作者

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

抵扣说明:

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

余额充值