From b570d049e5abb6e27be77c8d7fcfebfc07366b63 Mon Sep 17 00:00:00 2001 From: LY Date: Sat, 11 Oct 2025 16:30:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=96=87=E4=BB=B6=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../foodBlog/food_categories.json | 30 ++++++++++++++++ .../foodBlog/food_posts.json | 14 ++++++++ src/DjangoBlog-master/foodBlog/food_tags.json | 30 ++++++++++++++++ .../foodBlog/food_users.json | 13 +++++++ .../templates/blog/article_archives.html | 35 ++++++++++--------- .../templates/blog/article_detail.html | 18 ++++++++-- .../templates/blog/article_index.html | 9 +++++ .../templates/blog/error_page.html | 15 +++++++- .../templates/blog/links_list.html | 13 ++++++- 9 files changed, 157 insertions(+), 20 deletions(-) create mode 100644 src/DjangoBlog-master/foodBlog/food_categories.json create mode 100644 src/DjangoBlog-master/foodBlog/food_posts.json create mode 100644 src/DjangoBlog-master/foodBlog/food_tags.json create mode 100644 src/DjangoBlog-master/foodBlog/food_users.json diff --git a/src/DjangoBlog-master/foodBlog/food_categories.json b/src/DjangoBlog-master/foodBlog/food_categories.json new file mode 100644 index 0000000..03467de --- /dev/null +++ b/src/DjangoBlog-master/foodBlog/food_categories.json @@ -0,0 +1,30 @@ +[ + { + "model": "blog.category", + "pk": 1, + "fields": { + "name": "中式菜肴" + } + }, + { + "model": "blog.category", + "pk": 2, + "fields": { + "name": "西式美食" + } + }, + { + "model": "blog.category", + "pk": 3, + "fields": { + "name": "甜点烘焙" + } + }, + { + "model": "blog.category", + "pk": 4, + "fields": { + "name": "特色小吃" + } + } +] \ No newline at end of file diff --git a/src/DjangoBlog-master/foodBlog/food_posts.json b/src/DjangoBlog-master/foodBlog/food_posts.json new file mode 100644 index 0000000..62f692e --- /dev/null +++ b/src/DjangoBlog-master/foodBlog/food_posts.json @@ -0,0 +1,14 @@ +{ + "name": "$name$", + "version": "$version$", + "description": "$END$", + "main": "$main$", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://bdgit.educoder.net/pnry42fjm/DjangoBlog-Maintenance-Analysis.git" + }, + "private": true +} diff --git a/src/DjangoBlog-master/foodBlog/food_tags.json b/src/DjangoBlog-master/foodBlog/food_tags.json new file mode 100644 index 0000000..b650876 --- /dev/null +++ b/src/DjangoBlog-master/foodBlog/food_tags.json @@ -0,0 +1,30 @@ +[ +  { +    "model": "blog.tag", +    "pk": 1, +    "fields": { +      "name": "探店" +    } +  }, +  { +    "model": "blog.tag", +    "pk": 2, +    "fields": { +      "name": "家常菜" +    } +  }, +  { +    "model": "blog.tag", +    "pk": 3, +    "fields": { +      "name": "烘焙" +    } +  }, +  { +    "model": "blog.tag", +    "pk": 4, +    "fields": { +      "name": "小吃" +    } +  } +] \ No newline at end of file diff --git a/src/DjangoBlog-master/foodBlog/food_users.json b/src/DjangoBlog-master/foodBlog/food_users.json new file mode 100644 index 0000000..595f31e --- /dev/null +++ b/src/DjangoBlog-master/foodBlog/food_users.json @@ -0,0 +1,13 @@ +[ +  { +    "model": "auth.user", +    "pk": 1, +    "fields": { +      "username": "LY", +      "password": "LY181828", +      "email": "yantong268@qq.com", +      "is_staff": false, +      "is_superuser": false +    } +  } +] \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/article_archives.html b/src/DjangoBlog-master/templates/blog/article_archives.html index 959319e..5343a1d 100644 --- a/src/DjangoBlog-master/templates/blog/article_archives.html +++ b/src/DjangoBlog-master/templates/blog/article_archives.html @@ -1,13 +1,14 @@ -{% extends 'share_layout/base.html' %} -{% load blog_tags %} -{% load cache %} -{% load i18n %} -{% block header %} +{% extends 'share_layout/base.html' %} {# 继承基础模板,复用基础模板的结构和样式 #} +{% load blog_tags %} {# 加载自定义的blog_tags模板标签库,以便使用其中的模板标签 #} +{% load cache %} {# 加载缓存模板标签库,用于缓存部分页面内容 #} +{% load i18n %} {# 加载国际化模板标签库,支持多语言翻译 #} +{% block header %} {# 定义页面头部的block,用于填充页面头部相关内容 #} {% trans 'article archive' %} | {{ SITE_DESCRIPTION }} + {# 设置页面标题,使用国际化翻译显示“文章归档”,并拼接站点描述 #} - + {# 设置页面描述元数据 #} @@ -15,29 +16,31 @@ {% endblock %} -{% block content %} -
-
+{% block content %} {# 定义页面主要内容的block #} +
{# 主要内容的外层容器,设置id和class用于样式控制 #} +
{# 主要内容区域,role属性表明其主要内容的角色 #} -
+
{# 文章归档部分的头部容器 #} -

{% trans 'article archive' %}

+

{% trans 'article archive' %}

{# 显示“文章归档”的标题 #}
-
+
{# 文章归档的内容区域 #} - {% regroup article_list by pub_time.year as year_post_group %} + {% regroup article_list by pub_time.year as year_post_group %} {# 将文章列表按发布时间的年份分组,结果保存到year_post_group #}
    {% for year in year_post_group %} -
  • {{ year.grouper }} {% trans 'year' %} + {# 遍历按年份分组的结果 #} +
  • {{ year.grouper }} {% trans 'year' %} {# 显示年份 #} {% regroup year.list by pub_time.month as month_post_group %}
      - {% for month in month_post_group %} + {% for month in month_post_group %} {# 遍历按月份分组的结果 #}
    • {{ month.grouper }} {% trans 'month' %} + {# 显示月份,以及“月”的国际化翻译 #}
        {% for article in month.list %}
      • {{ article.title }} -
      • + {# 显示文章标题,并设置链接到文章详情页 #} {% endfor %}
    • diff --git a/src/DjangoBlog-master/templates/blog/article_detail.html b/src/DjangoBlog-master/templates/blog/article_detail.html index a74a0db..6def375 100644 --- a/src/DjangoBlog-master/templates/blog/article_detail.html +++ b/src/DjangoBlog-master/templates/blog/article_detail.html @@ -1,14 +1,22 @@ +{# 继承基础模板,复用基础模板(如导航栏、页脚、通用样式等)的结构和公共内容 #} {% extends 'share_layout/base.html' %} +{# 加载自定义的blog_tags模板标签库,用于使用库中定义的自定义模板标签 #} {% load blog_tags %} {% block header %} {% endblock %} +{# 定义页面主要内容block(content),承载当前页面的核心展示内容 #} {% block content %} + {# 主要内容外层容器,通过id和class控制样式,确保与站点整体布局风格统一 #}
      + {# 核心内容区域,role="main"是ARIA属性,用于辅助设备识别这是页面主要内容区 #}
      + {# 调用blog_tags库中的load_article_detail自定义标签,渲染文章详情内容 #} {% load_article_detail article False user %} + {# 条件判断:如果当前文章的类型为'a',则显示文章导航栏 #} {% if article.type == 'a' %} + {# 文章导航容器,用于展示上一篇/下一篇文章的跳转链接 #}
      - {% if article.comment_status == "o" and OPEN_SITE_COMMENT %} + {# 文章导航容器,用于展示上一篇/下一篇文章的跳转链接 #} + {% if article.comment_status == "o" and OPEN_SITE_COMMENT %} +{# 引入评论列表模板(comments/tags/comment_list.html),渲染当前文章已有的评论内容 #} {% include 'comments/tags/comment_list.html' %} + + {# 条件判断:如果用户已登录(user.is_authenticated),则显示“发表评论”的表单模板 #} {% if user.is_authenticated %} {% include 'comments/tags/post_comment.html' %} + + {# 若用户未登录,提示登录后才能评论,并提供登录链接和第三方登录入口 #} {% else %}

      您还没有登录,请您登录后发表评论。

      - +{# 登录链接,next参数携带当前页面的完整URL,确保用户登录后能跳转回当前文章页 #} {% load oauth_tags %} {% load_oauth_applications request %} diff --git a/src/DjangoBlog-master/templates/blog/article_index.html b/src/DjangoBlog-master/templates/blog/article_index.html index 0ee6150..0c4aafd 100644 --- a/src/DjangoBlog-master/templates/blog/article_index.html +++ b/src/DjangoBlog-master/templates/blog/article_index.html @@ -1,3 +1,4 @@ +{# 继承基础模板,复用基础模板中的公共结构(如导航栏、页脚)和样式 #} {% extends 'share_layout/base.html' %} {% load blog_tags %} {% load cache %} @@ -8,6 +9,7 @@ {% else %} {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} {% endif %} + {# 页面元数据:设置站点SEO描述,用于搜索引擎抓取时展示的页面简介 #} @@ -16,6 +18,7 @@ {% endblock %} +{# 定义页面主要内容(content)的内容块,承载文章列表和分页等核心内容 #} {% block content %}
      @@ -26,9 +29,12 @@
{% endif %} + {# 循环遍历文章列表(article_list),逐个渲染文章内容 #} {% for article in article_list %} {% load_article_detail article True user %} {% endfor %} + + {# 条件判断:如果文章列表支持分页(is_paginated为True),则渲染分页控件 #} {% if is_paginated %} {% load_pagination_info page_obj page_type tag_name %} @@ -37,6 +43,9 @@
{% endblock %} + +{# 定义页面侧边栏(sidebar)的内容块,承载侧边栏组件 #} {% block sidebar %} + {# 调用自定义标签load_sidebar,渲染侧边栏内容 #} {% load_sidebar user linktype %} {% endblock %} \ No newline at end of file diff --git a/src/DjangoBlog-master/templates/blog/error_page.html b/src/DjangoBlog-master/templates/blog/error_page.html index d41cfb6..aad3109 100644 --- a/src/DjangoBlog-master/templates/blog/error_page.html +++ b/src/DjangoBlog-master/templates/blog/error_page.html @@ -1,8 +1,13 @@ +{# 继承基础模板 #} {% extends 'share_layout/base.html' %} + +{# 加载自定义的blog_tags模板标签库,用于调用库中定义的自定义模板标签 #} {% load blog_tags %} {% load cache %} {% block header %} + {# 条件判断:如果存在tag_name(通常用于标记特定页面场景,如错误页、标签页),则进入场景化标题配置 #} {% if tag_name %} + {# 嵌套条件:根据statuscode(状态码)判断具体页面类型,设置对应的浏览器标签标题 #} {% if statuscode == '404' %} 404 NotFound {% elif statuscode == '403' %} @@ -10,12 +15,14 @@ {% elif statuscode == '500' %} 500 Error {% else %} + {# 其他未明确的状态码场景,暂留空标题(可根据实际需求补充) #} {% endif %} {% comment %}{% endcomment %} {% else %} {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} {% endif %} + {# 页面元数据:设置站点SEO专用描述,用于搜索引擎抓取时展示的页面简介,提升SEO效果 #} @@ -24,11 +31,16 @@ {% endblock %} + +{# 定义页面主要内容(content)块,承载当前页面的核心展示信息(此处以错误提示为主) #} {% block content %} + {# 主要内容外层容器,通过id和class控制样式,确保与站点整体布局风格统一 #}
+ {# 页面头部容器(通常用于显示页面标题),此处适配错误页/提示页的标题展示 #}
+ {# 页面核心标题:显示动态传递的message变量(如“页面未找到”“权限不足”等错误提示文本) #}

{{ message }}

@@ -37,8 +49,9 @@ {% endblock %} - +{# 定义页面侧边栏(sidebar)块,承载侧边栏组件 #} {% block sidebar %} + {# 调用blog_tags库中的load_sidebar自定义标签,渲染侧边栏内容 #} {% load_sidebar user 'i' %} {% endblock %} diff --git a/src/DjangoBlog-master/templates/blog/links_list.html b/src/DjangoBlog-master/templates/blog/links_list.html index ccecbea..9faf290 100644 --- a/src/DjangoBlog-master/templates/blog/links_list.html +++ b/src/DjangoBlog-master/templates/blog/links_list.html @@ -1,5 +1,7 @@ +{# 继承基础模板 #} {% extends 'share_layout/base.html' %} {% load blog_tags %} +{# 加载自定义的blog_tags模板标签库,后续可调用库中定义的自定义标签 #} {% load cache %} {% block header %} @@ -7,14 +9,21 @@ + {# Open Graph(OG)协议标签:指定内容类型为“博客”,用于社交平台(如微信、微博)分享时识别内容类型 #} + {# OG标签:社交分享时显示的标题,使用项目全局配置的站点名称(SITE_NAME) #} + {# OG标签:社交分享时显示的描述,使用站点全局描述(SITE_DESCRIPTION) #} + {# OG标签:社交分享时关联的页面URL,使用项目全局配置的基础域名(SITE_BASE_URL) #} + {# OG标签:社交分享时显示的站点名称,与SITE_NAME保持一致 #} {% endblock %} +{# 定义页面主要内容(content)块,承载“友情链接列表”的核心展示逻辑 #} {% block content %} + {# 主要内容外层容器,通过id(primary)和class(site-content)控制样式,确保与站点整体布局统一 #}
@@ -25,7 +34,9 @@
    + {# 循环遍历友情链接数据列表(object_list为视图传递的查询集,包含所有友情链接对象) #} {% for obj in object_list %} + {# 单个友情链接项(li),每个项对应一条友情链接 #}
  • {{ obj.name }}
  • @@ -36,7 +47,7 @@ {% endblock %} - +{# 定义页面侧边栏(sidebar)内容块,加载站点侧边栏组件 #} {% block sidebar %} {% load_sidebar user 'i' %} {% endblock %}