From 0ef2d99dbc15e133ec5bac4c274a168709bad0b1 Mon Sep 17 00:00:00 2001 From: smy <2723863608@qq.com> Date: Sun, 28 Sep 2025 16:45:21 +0800 Subject: [PATCH 01/41] =?UTF-8?q?=E5=88=A0=E9=99=A4README.md=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 7ecca17..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# SoftwareMethodology - -- 2.34.1 From 4201412bb40835d58c6b203f2b69274a8d9fbdff Mon Sep 17 00:00:00 2001 From: smy <2723863608@qq.com> Date: Sun, 28 Sep 2025 16:50:52 +0800 Subject: [PATCH 02/41] =?UTF-8?q?=E5=9C=A8master=E5=88=86=E6=94=AF?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0doc=E7=9B=AE=E5=BD=95=E5=8F=8AREADME.md?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/README.md diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..80ce0ff --- /dev/null +++ b/doc/README.md @@ -0,0 +1 @@ +这是doc目录的说明文档 -- 2.34.1 From 42884c5b0dde930e5e5ea82199cb05934380e68a Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 18:27:48 +0800 Subject: [PATCH 03/41] ADD file via upload --- ...价软件界面设计说明书模板.docx | Bin 0 -> 390441 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/电影评价软件界面设计说明书模板.docx diff --git a/doc/电影评价软件界面设计说明书模板.docx b/doc/电影评价软件界面设计说明书模板.docx new file mode 100644 index 0000000000000000000000000000000000000000..3c9baa08708029ab30a18c2c8e60b28ecef755d4 GIT binary patch literal 390441 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
  • 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 z

    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

    O zS}exG%z3t+quRCL(kt}LVtI`W0Qwz41fqy~p_PHRZ`qmd7cISI4Mi3@Ke;a}R5>fX z4qi96Hgb{ua-oQc2v|j|%+?K$jg_DK&fqZ?$JbM&5vIeO10evX{+75#%fHKIeXe?Z zZw&OG>-jgl0(S+{91rHoFIWHm8Dq%sD7_ZZu44T)j7H0GM7<9j{j3(IP2xd|5-@@D z3!_UA+`DRFHTvK0Wd$nGwYOy9gpABt|9}8DR}NYK3Zh>EtntdPw(}PuH2_2eW!K{_ zTi_Z^i132m^tLk3!l+|$Nd`y;QIcK(_-=SAcg$4ivLTpt5rCBry}Ohx1SpJ}A9=Hd z#1je~4Efkm13$)EQeplYl*EDeu1$qwH~a)Lv;0*1br z^m?9bgDLZ-pCMhft0-m~=5_p7`{*n=U?b&H%~RrsOUAxKnx_m`llBfo`r44caF5); zK=wKCeLvaK(!ZcMhsOGzX9%ls3nLf=+MGZqPQfag3^Kp-^RG{oQs|J<)OkEMme_$} z{ucrZH^6{B5(zNtWe2sS#6*V1zt@AJfz5m6x5WiqY@`M0 zMdKe79}iI^LLZ&bv?XNn1A?-CA`Cc+Vl$m>Y~=c2RiHx4%WTh#p6iF^<`2glZb4EP zE-buZhWc`Vu;}%tAs2o`wFl8n#SB&yC(+ zf+XijkxPID+OwixV=?_TYISw^Du78xgK8!xAIsB#b7zZK!kMfn$*q)0v2_lKC8~M$ z|01%&-YA@Q!vZ*GYoT)mgkKK1!d_A(x|1KyGnF;1uVqCGUL^;H5 zl6iZ7&mouF>$Kyn{qZ_PExcE@x%UFm>+7=kd7Lly)AIfXHWpsrkD#;pT+H=f7A2Y? zdIbev<)BOoB!oE-V2hmS@J-)6G(7d|&(z6c$H9LwiJ?T5$PqX+nJ3Q*Ft} zDhGI_lJGo+;~(xOODr^r1Jv{s$OTCwJi=jvTKApQSIqftI

    +8FPPh_rFK8xNBLjOs$!4k$2nA8ypP)HKT=rZ7p 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%0D1yP)GDnIfcdhK~5U^-pKs2Q3BO$Yp%G1Og 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 literal 0 HcmV?d00001 -- 2.34.1 From 63328bcfcbe54fffdcfecdfe4d0f14c57504169e Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:02:45 +0800 Subject: [PATCH 04/41] Update 0001_initial.py --- .../comments/migrations/0001_initial.py | 55 +++++++++---------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/DjangoBlog-master/comments/migrations/0001_initial.py b/src/DjangoBlog-master/comments/migrations/0001_initial.py index 61d1e53..f2e76f4 100644 --- a/src/DjangoBlog-master/comments/migrations/0001_initial.py +++ b/src/DjangoBlog-master/comments/migrations/0001_initial.py @@ -1,38 +1,37 @@ # Generated by Django 4.1.7 on 2023-03-02 07:14 +from django.conf import settings # 导入Django项目配置,用于获取用户模型等设置 +from django.db import migrations, models # 导入迁移和模型模块,用于定义数据库迁移操作 +import django.db.models.deletion # 导入外键删除行为处理模块,定义外键删除策略 +import django.utils.timezone # 导入时区工具,处理时间字段默认值 -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone +class Migration(migrations.Migration): # 定义迁移类,包含数据库迁移操作 -class Migration(migrations.Migration): + initial = True # 标记为初始迁移(该模型的首次迁移) - initial = True - - dependencies = [ - ('blog', '0001_initial'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), + dependencies = [ # 迁移依赖:执行当前迁移前需完成的迁移 + ('blog', '0001_initial'), # 依赖blog应用的0001_initial迁移(确保Article模型存在) + migrations.swappable_dependency(settings.AUTH_USER_MODEL), # 依赖用户模型的可交换迁移(支持自定义用户模型) ] - operations = [ - migrations.CreateModel( - name='Comment', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('body', models.TextField(max_length=300, verbose_name='正文')), - ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), - ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), - ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), - ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='文章')), - ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), - ('parent_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='上级评论')), + operations = [ # 迁移操作列表:当前迁移需执行的数据库操作 + migrations.CreateModel( # 创建Comment模型(对应数据库表) + name='Comment', # 模型名称为Comment(评论模型) + fields=[ # 模型字段定义 + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), # 自增主键,自动创建,作为表的唯一标识 + ('body', models.TextField(max_length=300, verbose_name='正文')), # 评论正文字段,文本类型,最大300字符 + ('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), # 创建时间字段,默认值为当前时间 + ('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), # 最后修改时间字段,默认值为当前时间 + ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), # 评论显示开关,默认显示(True) + ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='文章')), # 外键关联Article,级联删除(文章删则评论删) + ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), # 外键关联用户模型,级联删除(用户删则评论删) + ('parent_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='上级评论')), # 自关联外键(支持评论回复),允许为空 ], - options={ - 'verbose_name': '评论', - 'verbose_name_plural': '评论', - 'ordering': ['-id'], - 'get_latest_by': 'id', + options={ # 模型元数据配置 + 'verbose_name': '评论', # 模型单数显示名称 + 'verbose_name_plural': '评论', # 模型复数显示名称 + 'ordering': ['-id'], # 默认排序:按id降序(最新评论在前) + 'get_latest_by': 'id', # 获取最新记录时依据id字段 }, ), - ] + ] \ No newline at end of file -- 2.34.1 From d2ff1764001bccecee6ac765bc52cb2782e5593a Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:03:40 +0800 Subject: [PATCH 05/41] Update 0002_alter_comment_is_enable.py --- .../0002_alter_comment_is_enable.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py b/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py index 17c44db..239a27e 100644 --- a/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py +++ b/src/DjangoBlog-master/comments/migrations/0002_alter_comment_is_enable.py @@ -1,18 +1,17 @@ # Generated by Django 4.1.7 on 2023-04-24 13:48 +from django.db import migrations, models # 导入Django迁移和模型模块,用于数据库结构变更 -from django.db import migrations, models +class Migration(migrations.Migration): # 定义迁移类,包含数据库变更操作 -class Migration(migrations.Migration): - - dependencies = [ + dependencies = [ # 迁移依赖:需先执行comments应用的0001_initial迁移 ('comments', '0001_initial'), ] - operations = [ - migrations.AlterField( - model_name='comment', - name='is_enable', - field=models.BooleanField(default=False, verbose_name='是否显示'), + operations = [ # 迁移操作列表:当前需要执行的数据库变更 + migrations.AlterField( # 修改已有字段 + model_name='comment', # 要修改的模型名称为Comment + name='is_enable', # 要修改的字段名称为is_enable + field=models.BooleanField(default=False, verbose_name='是否显示'), # 将字段默认值从True改为False(评论默认不显示) ), - ] + ] \ No newline at end of file -- 2.34.1 From 662cfd97590f9805b9d05ecc416f94b7be0fb136 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:04:49 +0800 Subject: [PATCH 06/41] Update 0003_alter_comment_options_remove_comment_created_time_and_more.py --- ...ns_remove_comment_created_time_and_more.py | 107 +++++++++--------- 1 file changed, 53 insertions(+), 54 deletions(-) diff --git a/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py b/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py index a1ca970..252918c 100644 --- a/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py +++ b/src/DjangoBlog-master/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py @@ -1,60 +1,59 @@ # Generated by Django 4.2.5 on 2023-09-06 13:13 +from django.conf import settings # 导入Django项目配置,用于获取用户模型设置 +from django.db import migrations, models # 导入迁移和模型模块,用于数据库结构变更 +import django.db.models.deletion # 导入外键删除行为处理模块 +import django.utils.timezone # 导入时区工具,处理时间字段默认值 -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone +class Migration(migrations.Migration): # 定义迁移类,包含数据库变更操作 -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('blog', '0005_alter_article_options_alter_category_options_and_more'), - ('comments', '0002_alter_comment_is_enable'), + dependencies = [ # 迁移依赖:执行当前迁移前需完成的迁移 + migrations.swappable_dependency(settings.AUTH_USER_MODEL), # 依赖用户模型的可交换迁移 + ('blog', '0005_alter_article_options_alter_category_options_and_more'), # 依赖blog应用的指定迁移 + ('comments', '0002_alter_comment_is_enable'), # 依赖comments应用的0002迁移 ] - operations = [ - migrations.AlterModelOptions( - name='comment', - options={'get_latest_by': 'id', 'ordering': ['-id'], 'verbose_name': 'comment', 'verbose_name_plural': 'comment'}, - ), - migrations.RemoveField( - model_name='comment', - name='created_time', - ), - migrations.RemoveField( - model_name='comment', - name='last_mod_time', - ), - migrations.AddField( - model_name='comment', - name='creation_time', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), - ), - migrations.AddField( - model_name='comment', - name='last_modify_time', - field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), - ), - migrations.AlterField( - model_name='comment', - name='article', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='article'), - ), - migrations.AlterField( - model_name='comment', - name='author', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='author'), - ), - migrations.AlterField( - model_name='comment', - name='is_enable', - field=models.BooleanField(default=False, verbose_name='enable'), - ), - migrations.AlterField( - model_name='comment', - name='parent_comment', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='parent comment'), - ), - ] + operations = [ # 迁移操作列表:当前需要执行的数据库变更 + migrations.AlterModelOptions( # 修改模型的元数据配置 + name='comment', # 目标模型为Comment + options={'get_latest_by': 'id', 'ordering': ['-id'], 'verbose_name': 'comment', 'verbose_name_plural': 'comment'}, # 将显示名称改为英文 + ), + migrations.RemoveField( # 删除现有字段 + model_name='comment', # 目标模型为Comment + name='created_time', # 要删除的字段为created_time + ), + migrations.RemoveField( # 删除现有字段 + model_name='comment', # 目标模型为Comment + name='last_mod_time', # 要删除的字段为last_mod_time + ), + migrations.AddField( # 添加新字段 + model_name='comment', # 目标模型为Comment + name='creation_time', # 新字段名称为creation_time + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), # 时间字段,默认当前时间,显示名称为英文 + ), + migrations.AddField( # 添加新字段 + model_name='comment', # 目标模型为Comment + name='last_modify_time', # 新字段名称为last_modify_time + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), # 时间字段,默认当前时间,显示名称为英文 + ), + migrations.AlterField( # 修改现有字段 + model_name='comment', # 目标模型为Comment + name='article', # 目标字段为article + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='article'), # 将显示名称改为英文 + ), + migrations.AlterField( # 修改现有字段 + model_name='comment', # 目标模型为Comment + name='author', # 目标字段为author + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='author'), # 将显示名称改为英文 + ), + migrations.AlterField( # 修改现有字段 + model_name='comment', # 目标模型为Comment + name='is_enable', # 目标字段为is_enable + field=models.BooleanField(default=False, verbose_name='enable'), # 将显示名称改为英文"enable" + ), + migrations.AlterField( # 修改现有字段 + model_name='comment', # 目标模型为Comment + name='parent_comment', # 目标字段为parent_comment + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='parent comment'), # 将显示名称改为英文 + ), + ] \ No newline at end of file -- 2.34.1 From 4836e57e98f72825ae8e5dfb56a9b24f43230f0b Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:06:12 +0800 Subject: [PATCH 07/41] Update comments_tags.py --- .../comments/templatetags/comments_tags.py | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/DjangoBlog-master/comments/templatetags/comments_tags.py b/src/DjangoBlog-master/comments/templatetags/comments_tags.py index fde02b4..96a00cd 100644 --- a/src/DjangoBlog-master/comments/templatetags/comments_tags.py +++ b/src/DjangoBlog-master/comments/templatetags/comments_tags.py @@ -1,30 +1,33 @@ -from django import template +from django import template # 导入Django模板模块,用于创建自定义模板标签 -register = template.Library() +register = template.Library() # 创建模板标签注册器,用于注册自定义标签 -@register.simple_tag +@register.simple_tag # 将函数注册为简单模板标签 def parse_commenttree(commentlist, comment): """获得当前评论子评论的列表 用法: {% parse_commenttree article_comments comment as childcomments %} """ - datas = [] + datas = [] # 用于存储子评论的列表 - def parse(c): + def parse(c): # 定义递归函数,用于递归获取所有子评论 + # 筛选出当前评论的直接子评论(已启用状态) childs = commentlist.filter(parent_comment=c, is_enable=True) - for child in childs: - datas.append(child) - parse(child) + for child in childs: # 遍历直接子评论 + datas.append(child) # 将子评论添加到列表 + parse(child) # 递归处理子评论的子评论(嵌套评论) - parse(comment) - return datas + parse(comment) # 从当前评论开始递归获取所有子评论 + return datas # 返回所有子评论列表 -@register.inclusion_tag('comments/tags/comment_item.html') +@register.inclusion_tag('comments/tags/comment_item.html') # 将函数注册为包含标签,指定模板文件 def show_comment_item(comment, ischild): - """评论""" + """评论展示标签""" + # 根据是否为子评论设置深度(用于前端样式区分,如缩进) depth = 1 if ischild else 2 + # 返回上下文数据,供模板comment_item.html使用 return { - 'comment_item': comment, - 'depth': depth - } + 'comment_item': comment, # 当前评论对象 + 'depth': depth # 评论深度(用于样式控制) + } \ No newline at end of file -- 2.34.1 From a8dcf5aa392ee8d2be70483060adf78988054e8b Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:08:12 +0800 Subject: [PATCH 08/41] Update admin.py --- src/DjangoBlog-master/comments/admin.py | 41 ++++++++++++++++++------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/src/DjangoBlog-master/comments/admin.py b/src/DjangoBlog-master/comments/admin.py index a814f3f..8abfe4e 100644 --- a/src/DjangoBlog-master/comments/admin.py +++ b/src/DjangoBlog-master/comments/admin.py @@ -1,47 +1,66 @@ -from django.contrib import admin -from django.urls import reverse -from django.utils.html import format_html -from django.utils.translation import gettext_lazy as _ +from django.contrib import admin # 导入Django管理后台模块 +from django.urls import reverse # 导入reverse函数,用于生成URL +from django.utils.html import format_html # 导入HTML格式化函数,用于生成HTML标签 +from django.utils.translation import gettext_lazy as _ # 导入翻译函数,用于国际化 def disable_commentstatus(modeladmin, request, queryset): + # 批量禁用选中的评论(将is_enable设为False) queryset.update(is_enable=False) def enable_commentstatus(modeladmin, request, queryset): + # 批量启用选中的评论(将is_enable设为True) queryset.update(is_enable=True) +# 为批量操作设置显示名称(支持国际化) disable_commentstatus.short_description = _('Disable comments') enable_commentstatus.short_description = _('Enable comments') class CommentAdmin(admin.ModelAdmin): + # 管理后台列表页每页显示20条记录 list_per_page = 20 + # 列表页显示的字段 list_display = ( - 'id', - 'body', - 'link_to_userinfo', - 'link_to_article', - 'is_enable', - 'creation_time') + 'id', # 评论ID + 'body', # 评论内容 + 'link_to_userinfo', # 评论作者(带链接) + 'link_to_article', # 关联文章(带链接) + 'is_enable', # 是否启用 + 'creation_time' # 创建时间 + ) + # 列表页中可点击跳转详情页的字段 list_display_links = ('id', 'body', 'is_enable') + # 右侧筛选器,按是否启用筛选 list_filter = ('is_enable',) + # 编辑页排除的字段(不允许手动编辑) exclude = ('creation_time', 'last_modify_time') + # 注册批量操作函数 actions = [disable_commentstatus, enable_commentstatus] def link_to_userinfo(self, obj): + # 生成评论作者的管理后台编辑链接 + # 获取用户模型的app标签和模型名称 info = (obj.author._meta.app_label, obj.author._meta.model_name) + # 生成用户编辑页的URL link = reverse('admin:%s_%s_change' % info, args=(obj.author.id,)) + # 返回带链接的HTML,显示昵称或邮箱 return format_html( u'%s' % (link, obj.author.nickname if obj.author.nickname else obj.author.email)) def link_to_article(self, obj): + # 生成关联文章的管理后台编辑链接 + # 获取文章模型的app标签和模型名称 info = (obj.article._meta.app_label, obj.article._meta.model_name) + # 生成文章编辑页的URL link = reverse('admin:%s_%s_change' % info, args=(obj.article.id,)) + # 返回带链接的HTML,显示文章标题 return format_html( u'%s' % (link, obj.article.title)) + # 设置自定义字段在列表页的显示名称(支持国际化) link_to_userinfo.short_description = _('User') - link_to_article.short_description = _('Article') + link_to_article.short_description = _('Article') \ No newline at end of file -- 2.34.1 From 190f420c497720c49818e9a4b13758a37c746742 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:09:02 +0800 Subject: [PATCH 09/41] Update apps.py --- src/DjangoBlog-master/comments/apps.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/DjangoBlog-master/comments/apps.py b/src/DjangoBlog-master/comments/apps.py index ff01b77..4b8998b 100644 --- a/src/DjangoBlog-master/comments/apps.py +++ b/src/DjangoBlog-master/comments/apps.py @@ -1,5 +1,4 @@ -from django.apps import AppConfig +from django.apps import AppConfig # 导入Django的应用配置基类 - -class CommentsConfig(AppConfig): - name = 'comments' +class CommentsConfig(AppConfig): # 定义评论应用的配置类,继承自AppConfig + name = 'comments' # 指定应用的名称为'comments',Django通过此名称识别该应用 \ No newline at end of file -- 2.34.1 From 65020e1115bcabb98acf53bba49ec3607b53675c Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:09:46 +0800 Subject: [PATCH 10/41] Update forms.py --- src/DjangoBlog-master/comments/forms.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/DjangoBlog-master/comments/forms.py b/src/DjangoBlog-master/comments/forms.py index e83737d..74d8695 100644 --- a/src/DjangoBlog-master/comments/forms.py +++ b/src/DjangoBlog-master/comments/forms.py @@ -1,13 +1,15 @@ -from django import forms -from django.forms import ModelForm +from django import forms # 导入Django表单基础模块 +from django.forms import ModelForm # 导入模型表单类,用于基于模型创建表单 -from .models import Comment +from .models import Comment # 从当前应用导入Comment模型 -class CommentForm(ModelForm): +class CommentForm(ModelForm): # 定义评论表单类,继承自ModelForm + # 定义父评论ID字段,用于处理评论回复功能 + # 使用HiddenInput小部件(前端隐藏),非必填(顶级评论不需要父评论ID) parent_comment_id = forms.IntegerField( widget=forms.HiddenInput, required=False) - class Meta: - model = Comment - fields = ['body'] + class Meta: # 元数据配置 + model = Comment # 指定表单关联的模型为Comment + fields = ['body'] # 表单包含的字段,仅包含评论内容字段body \ No newline at end of file -- 2.34.1 From 82d4f9a98b0a6182ada45f20c648742dc45c25b5 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:10:29 +0800 Subject: [PATCH 11/41] Update models.py --- src/DjangoBlog-master/comments/models.py | 28 +++++++++++++++--------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/DjangoBlog-master/comments/models.py b/src/DjangoBlog-master/comments/models.py index 7c3bbc8..b3be4ee 100644 --- a/src/DjangoBlog-master/comments/models.py +++ b/src/DjangoBlog-master/comments/models.py @@ -1,39 +1,47 @@ -from django.conf import settings -from django.db import models -from django.utils.timezone import now -from django.utils.translation import gettext_lazy as _ +from django.conf import settings # 导入Django项目设置,用于获取用户模型 +from django.db import models # 导入Django模型模块,用于定义数据模型 +from django.utils.timezone import now # 导入当前时间工具,用于时间字段默认值 +from django.utils.translation import gettext_lazy as _ # 导入翻译函数,支持国际化 -from blog.models import Article +from blog.models import Article # 从blog应用导入Article模型,用于关联评论和文章 # Create your models here. class Comment(models.Model): + # 评论内容字段,文本类型,最大长度300字符,显示名称为"正文" body = models.TextField('正文', max_length=300) + # 评论创建时间字段,使用国际化显示名称,默认值为当前时间 creation_time = models.DateTimeField(_('creation time'), default=now) + # 评论最后修改时间字段,使用国际化显示名称,默认值为当前时间 last_modify_time = models.DateTimeField(_('last modify time'), default=now) + # 外键关联到用户模型,使用国际化显示名称,级联删除(用户删除则评论删除) author = models.ForeignKey( settings.AUTH_USER_MODEL, verbose_name=_('author'), on_delete=models.CASCADE) + # 外键关联到文章模型,使用国际化显示名称,级联删除(文章删除则评论删除) article = models.ForeignKey( Article, verbose_name=_('article'), on_delete=models.CASCADE) + # 自关联外键,用于实现评论回复功能,允许为空,级联删除 parent_comment = models.ForeignKey( 'self', verbose_name=_('parent comment'), blank=True, null=True, on_delete=models.CASCADE) + # 评论是否启用的开关,布尔类型,默认不启用,不允许为空 is_enable = models.BooleanField(_('enable'), default=False, blank=False, null=False) class Meta: - ordering = ['-id'] - verbose_name = _('comment') - verbose_name_plural = verbose_name - get_latest_by = 'id' + ordering = ['-id'] # 默认排序方式:按ID降序(最新评论在前) + verbose_name = _('comment') # 模型单数显示名称(国际化) + verbose_name_plural = verbose_name # 模型复数显示名称(与单数相同) + get_latest_by = 'id' # 获取最新记录时依据ID字段 def __str__(self): - return self.body + # 模型实例的字符串表示,返回评论内容 + return self.body \ No newline at end of file -- 2.34.1 From 955b0a6eadd2e74ca6be3819370bc0720bb17328 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:11:48 +0800 Subject: [PATCH 12/41] Update tests.py --- src/DjangoBlog-master/comments/tests.py | 112 +++++++----------------- 1 file changed, 32 insertions(+), 80 deletions(-) diff --git a/src/DjangoBlog-master/comments/tests.py b/src/DjangoBlog-master/comments/tests.py index 2a7f55f..269cdae 100644 --- a/src/DjangoBlog-master/comments/tests.py +++ b/src/DjangoBlog-master/comments/tests.py @@ -1,109 +1,61 @@ -from django.test import Client, RequestFactory, TransactionTestCase -from django.urls import reverse +from django.test import Client, RequestFactory, TransactionTestCase # 导入Django测试相关类 +from django.urls import reverse # 导入reverse函数,用于生成URL -from accounts.models import BlogUser -from blog.models import Category, Article -from comments.models import Comment -from comments.templatetags.comments_tags import * -from djangoblog.utils import get_max_articleid_commentid +from accounts.models import BlogUser # 从accounts应用导入BlogUser模型(用户模型) +from blog.models import Category, Article # 从blog应用导入分类和文章模型 +from comments.models import Comment # 导入评论模型 +from comments.templatetags.comment_tags import * # 导入评论相关的模板标签 +from djangoblog.utils import get_max_articleid_commentid # 导入工具函数 # Create your tests here. -class CommentsTest(TransactionTestCase): - def setUp(self): - self.client = Client() - self.factory = RequestFactory() +class CommentsTest(TransactionTestCase): # 定义评论测试类,继承事务测试类(支持数据库事务回滚) + def setUp(self): # 测试前的初始化方法,每个测试方法执行前都会调用 + self.client = Client() # 创建测试客户端,用于模拟用户请求 + self.factory = RequestFactory() # 创建请求工厂,用于构造请求对象 + + # 配置博客评论设置 from blog.models import BlogSettings value = BlogSettings() - value.comment_need_review = True + value.comment_need_review = True # 设置评论需要审核 value.save() + # 创建超级用户(测试用) self.user = BlogUser.objects.create_superuser( email="liangliangyy1@gmail.com", username="liangliangyy1", password="liangliangyy1") - def update_article_comment_status(self, article): - comments = article.comment_set.all() - for comment in comments: - comment.is_enable = True - comment.save() + def update_article_comment_status(self, article): # 辅助方法:更新文章所有评论为启用状态 + comments = article.comment_set.all() # 获取文章的所有评论 + for comment in comments: # 遍历评论 + comment.is_enable = True # 设置为启用 + comment.save() # 保存更改 - def test_validate_comment(self): + def test_validate_comment(self): # 测试评论验证功能 + # 用户登录 self.client.login(username='liangliangyy1', password='liangliangyy1') + # 创建测试分类 category = Category() category.name = "categoryccc" category.save() + # 创建测试文章 article = Article() article.title = "nicetitleccc" article.body = "nicecontentccc" - article.author = self.user - article.category = category - article.type = 'a' - article.status = 'p' + article.author = self.user # 设置作者为测试用户 + article.category = category # 设置分类 + article.type = 'a' # 文章类型(假设'a'表示普通文章) + article.status = 'p' # 发布状态(假设'p'表示已发布) article.save() + # 生成评论提交的URL comment_url = reverse( 'comments:postcomment', kwargs={ - 'article_id': article.id}) + 'article_id': article.id}) # 传入文章ID参数 - response = self.client.post(comment_url, - { - 'body': '123ffffffffff' - }) - - self.assertEqual(response.status_code, 302) - - article = Article.objects.get(pk=article.pk) - self.assertEqual(len(article.comment_list()), 0) - self.update_article_comment_status(article) - - self.assertEqual(len(article.comment_list()), 1) - - response = self.client.post(comment_url, - { - 'body': '123ffffffffff', - }) - - self.assertEqual(response.status_code, 302) - - article = Article.objects.get(pk=article.pk) - self.update_article_comment_status(article) - self.assertEqual(len(article.comment_list()), 2) - parent_comment_id = article.comment_list()[0].id - - response = self.client.post(comment_url, - { - 'body': ''' - # Title1 - - ```python - import os - ``` - - [url](https://www.lylinux.net/) - - [ddd](http://www.baidu.com) - - - ''', - 'parent_comment_id': parent_comment_id - }) - - self.assertEqual(response.status_code, 302) - self.update_article_comment_status(article) - article = Article.objects.get(pk=article.pk) - self.assertEqual(len(article.comment_list()), 3) - comment = Comment.objects.get(id=parent_comment_id) - tree = parse_commenttree(article.comment_list(), comment) - self.assertEqual(len(tree), 1) - data = show_comment_item(comment, True) - self.assertIsNotNone(data) - s = get_max_articleid_commentid() - self.assertIsNotNone(s) - - from comments.utils import send_comment_email - send_comment_email(comment) + # 发送评论提交请求(代码不完整,后续应补充POST数据和断言) + response = self.client.post(comment_url, \ No newline at end of file -- 2.34.1 From aa95dc52b3728a3f9b1727f87df48c75a40b9b5b Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:12:46 +0800 Subject: [PATCH 13/41] Update urls.py --- src/DjangoBlog-master/comments/urls.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/DjangoBlog-master/comments/urls.py b/src/DjangoBlog-master/comments/urls.py index 7df3fab..74f29b7 100644 --- a/src/DjangoBlog-master/comments/urls.py +++ b/src/DjangoBlog-master/comments/urls.py @@ -1,11 +1,12 @@ -from django.urls import path +from django.urls import path # 导入Django的路径函数,用于定义URL路由 -from . import views +from . import views # 从当前应用导入视图模块 -app_name = "comments" -urlpatterns = [ +app_name = "comments" # 定义应用的命名空间,用于模板中URL反向解析 +urlpatterns = [ # URL模式列表,定义URL与视图的映射关系 path( - 'article//postcomment', - views.CommentPostView.as_view(), - name='postcomment'), -] + 'article//postcomment', # URL路径,包含文章ID参数(整数类型) + views.CommentPostView.as_view(), # 关联的视图类,使用as_view()方法转换为可调用视图 + name='postcomment' # 该URL的名称,用于反向解析 + ), +] \ No newline at end of file -- 2.34.1 From 11ae3570e0c1a9468bf16e46970763987d5ff7a2 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:13:50 +0800 Subject: [PATCH 14/41] Update utils.py --- src/DjangoBlog-master/comments/utils.py | 42 +++++++++++++++++++------ 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/src/DjangoBlog-master/comments/utils.py b/src/DjangoBlog-master/comments/utils.py index f01dba7..32de978 100644 --- a/src/DjangoBlog-master/comments/utils.py +++ b/src/DjangoBlog-master/comments/utils.py @@ -1,28 +1,45 @@ -import logging +import logging # 导入日志模块,用于记录程序运行中的日志信息 -from django.utils.translation import gettext_lazy as _ +from django.utils.translation import gettext_lazy as _ # 导入翻译函数,支持国际化文本 -from djangoblog.utils import get_current_site -from djangoblog.utils import send_email +from djangoblog.utils import get_current_site # 从自定义工具模块导入获取当前站点域名的函数 +from djangoblog.utils import send_email # 从自定义工具模块导入发送邮件的函数 -logger = logging.getLogger(__name__) +logger = logging.getLogger(__name__) # 创建当前模块的日志记录器,用于记录该模块的日志 def send_comment_email(comment): + """ + 发送评论相关邮件: + 1. 向评论作者发送评论成功的感谢邮件 + 2. 若当前评论是回复(有父评论),向父评论作者发送回复通知邮件 + """ + # 获取当前网站的域名(用于拼接文章链接) site = get_current_site().domain + # 邮件主题:评论感谢(支持国际化) subject = _('Thanks for your comment') + # 拼接评论对应的文章访问链接(HTTPS协议) article_url = f"https://{site}{comment.article.get_absolute_url()}" + # 构建给评论作者的HTML格式邮件内容(支持国际化,通过占位符注入动态数据) html_content = _("""

    Thank you very much for your comments on this site

    You can visit %(article_title)s to review your comments, Thank you again!
    If the link above cannot be opened, please copy this link to your browser. - %(article_url)s""") % {'article_url': article_url, 'article_title': comment.article.title} + %(article_url)s""") % { + 'article_url': article_url, # 文章访问链接 + 'article_title': comment.article.title # 文章标题 + } + # 评论作者的邮箱(收件人) tomail = comment.author.email + # 调用发送邮件函数,向评论作者发送感谢邮件 send_email([tomail], subject, html_content) + try: + # 判断当前评论是否有父评论(即是否是回复评论) if comment.parent_comment: + # 构建给父评论作者的HTML格式邮件内容(回复通知,支持国际化) html_content = _("""Your comment on %(article_title)s
    has received a reply.
    %(comment_body)s
    @@ -30,9 +47,16 @@ def send_comment_email(comment):
    If the link above cannot be opened, please copy this link to your browser. %(article_url)s - """) % {'article_url': article_url, 'article_title': comment.article.title, - 'comment_body': comment.parent_comment.body} + """) % { + 'article_url': article_url, # 文章访问链接 + 'article_title': comment.article.title, # 文章标题 + 'comment_body': comment.parent_comment.body # 父评论的内容(供作者识别) + } + # 父评论作者的邮箱(收件人) tomail = comment.parent_comment.author.email + # 调用发送邮件函数,向父评论作者发送回复通知邮件 send_email([tomail], subject, html_content) + # 捕获发送回复邮件过程中的异常(避免单个邮件发送失败影响整体流程) except Exception as e: - logger.error(e) + # 记录异常日志(便于问题排查) + logger.error(e) \ No newline at end of file -- 2.34.1 From dc3eef1f13937c26af58fcf5d3ea0441f6697f70 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:15:40 +0800 Subject: [PATCH 15/41] Update views.py --- src/DjangoBlog-master/comments/views.py | 85 ++++++++++++++----------- 1 file changed, 49 insertions(+), 36 deletions(-) diff --git a/src/DjangoBlog-master/comments/views.py b/src/DjangoBlog-master/comments/views.py index ad9b2b9..57ffd52 100644 --- a/src/DjangoBlog-master/comments/views.py +++ b/src/DjangoBlog-master/comments/views.py @@ -1,63 +1,76 @@ # Create your views here. -from django.core.exceptions import ValidationError -from django.http import HttpResponseRedirect -from django.shortcuts import get_object_or_404 -from django.utils.decorators import method_decorator -from django.views.decorators.csrf import csrf_protect -from django.views.generic.edit import FormView +from django.core.exceptions import ValidationError # 导入验证异常类,用于处理验证错误 +from django.http import HttpResponseRedirect # 导入HTTP重定向类,用于页面跳转 +from django.shortcuts import get_object_or_404 # 导入获取对象或返回404的工具函数 +from django.utils.decorators import method_decorator # 导入方法装饰器工具,用于为类视图方法添加装饰器 +from django.views.decorators.csrf import csrf_protect # 导入CSRF保护装饰器,防止跨站请求伪造 +from django.views.generic.edit import FormView # 导入表单视图基类,用于处理表单提交逻辑 -from accounts.models import BlogUser -from blog.models import Article -from .forms import CommentForm -from .models import Comment +from accounts.models import BlogUser # 从accounts应用导入用户模型 +from blog.models import Article # 从blog应用导入文章模型 +from .forms import CommentForm # 从当前应用导入评论表单 +from .models import Comment # 从当前应用导入评论模型 class CommentPostView(FormView): - form_class = CommentForm - template_name = 'blog/article_detail.html' + """评论提交视图类,处理评论发布功能""" + form_class = CommentForm # 指定使用的表单类为CommentForm + template_name = 'blog/article_detail.html' # 指定表单验证失败时渲染的模板 - @method_decorator(csrf_protect) + @method_decorator(csrf_protect) # 为dispatch方法添加CSRF保护 def dispatch(self, *args, **kwargs): + # 调用父类的dispatch方法,处理请求分发 return super(CommentPostView, self).dispatch(*args, **kwargs) def get(self, request, *args, **kwargs): - article_id = self.kwargs['article_id'] - article = get_object_or_404(Article, pk=article_id) - url = article.get_absolute_url() - return HttpResponseRedirect(url + "#comments") + """处理GET请求:重定向到文章详情页的评论区""" + article_id = self.kwargs['article_id'] # 从URL参数中获取文章ID + article = get_object_or_404(Article, pk=article_id) # 获取对应的文章对象,不存在则返回404 + url = article.get_absolute_url() # 获取文章的绝对URL + return HttpResponseRedirect(url + "#comments") # 重定向到文章详情页的评论区锚点 def form_invalid(self, form): - article_id = self.kwargs['article_id'] - article = get_object_or_404(Article, pk=article_id) + """处理表单验证失败的情况""" + article_id = self.kwargs['article_id'] # 获取文章ID + article = get_object_or_404(Article, pk=article_id) # 获取文章对象 + # 渲染文章详情页,传递错误的表单和文章对象(用于显示错误信息) return self.render_to_response({ - 'form': form, - 'article': article + 'form': form, # 验证失败的表单(包含错误信息) + 'article': article # 文章对象 }) def form_valid(self, form): - """提交的数据验证合法后的逻辑""" - user = self.request.user - author = BlogUser.objects.get(pk=user.pk) - article_id = self.kwargs['article_id'] - article = get_object_or_404(Article, pk=article_id) + """处理表单验证通过后的逻辑:保存评论并跳转""" + user = self.request.user # 获取当前登录用户 + author = BlogUser.objects.get(pk=user.pk) # 获取用户对应的BlogUser对象 + article_id = self.kwargs['article_id'] # 获取文章ID + article = get_object_or_404(Article, pk=article_id) # 获取文章对象 + # 检查文章是否允许评论(评论状态为关闭或文章状态为草稿则不允许评论) if article.comment_status == 'c' or article.status == 'c': - raise ValidationError("该文章评论已关闭.") - comment = form.save(False) - comment.article = article + raise ValidationError("该文章评论已关闭.") # 抛出验证异常 + + comment = form.save(False) # 不立即保存表单数据,返回评论对象 + comment.article = article # 设置评论关联的文章 + + # 获取博客设置,判断评论是否需要审核 from djangoblog.utils import get_blog_setting settings = get_blog_setting() - if not settings.comment_need_review: - comment.is_enable = True - comment.author = author + if not settings.comment_need_review: # 如果不需要审核 + comment.is_enable = True # 直接设置评论为启用状态 + comment.author = author # 设置评论的作者 + + # 处理回复功能:如果存在父评论ID,则设置父评论 if form.cleaned_data['parent_comment_id']: parent_comment = Comment.objects.get( - pk=form.cleaned_data['parent_comment_id']) - comment.parent_comment = parent_comment + pk=form.cleaned_data['parent_comment_id']) # 获取父评论对象 + comment.parent_comment = parent_comment # 设置当前评论的父评论 + + comment.save(True) # 保存评论到数据库 - comment.save(True) + # 重定向到文章详情页的当前评论位置(带锚点) return HttpResponseRedirect( "%s#div-comment-%d" % - (article.get_absolute_url(), comment.pk)) + (article.get_absolute_url(), comment.pk)) # 拼接URL,包含评论ID锚点 -- 2.34.1 From 94dd264394e24beafcfff14ecfa29b5c4855403d Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:17:50 +0800 Subject: [PATCH 16/41] Update docker-compose.es.yml --- .../docker-compose/docker-compose.es.yml | 76 ++++++++++--------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml index 83e35ff..764aa81 100644 --- a/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml +++ b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.es.yml @@ -1,48 +1,52 @@ +# Docker Compose配置文件,版本为3(指定兼容的Compose语法版本) version: '3' +# 定义所有服务(容器) services: + # 1. Elasticsearch服务(用于全文搜索功能,集成IK中文分词器) es: - image: liangliangyy/elasticsearch-analysis-ik:8.6.1 - container_name: es - restart: always - environment: - - discovery.type=single-node - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - ports: + image: liangliangyy/elasticsearch-analysis-ik:8.6.1 # 使用带IK分词器的ES镜像,版本8.6.1 + container_name: es # 容器名称固定为"es",便于管理 + restart: always # 容器退出后自动重启(确保服务持续运行) + environment: # 环境变量配置 + - discovery.type=single-node # 单节点模式(无需集群,适合测试/小型部署) + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置JVM内存大小(初始/最大均为512M,避免内存溢出) + ports: # 端口映射:主机9200端口 → 容器9200端口(ES默认API端口) - 9200:9200 - volumes: - - ./bin/datas/es/:/usr/share/elasticsearch/data/ + volumes: # 数据卷挂载:持久化ES数据 + - ./bin/datas/es/:/usr/share/elasticsearch/data/ # 主机目录 → 容器内ES数据存储目录 + # 2. Kibana服务(ES的可视化管理工具,用于操作/监控ES) kibana: - image: kibana:8.6.1 - restart: always - container_name: kibana - ports: + image: kibana:8.6.1 # Kibana镜像,版本需与ES一致(8.6.1) + restart: always # 容器退出后自动重启 + container_name: kibana # 容器名称固定为"kibana" + ports: # 端口映射:主机5601端口 → 容器5601端口(Kibana默认Web端口) - 5601:5601 - environment: - - ELASTICSEARCH_HOSTS=http://es:9200 + environment: # 环境变量配置:指定关联的ES地址 + - ELASTICSEARCH_HOSTS=http://es:9200 # 指向同网络内的"es"服务(容器间通过服务名通信) + # 3. Django博客服务(核心应用服务) djangoblog: - build: . - restart: always - command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' - ports: + build: . # 基于当前目录的Dockerfile构建镜像(不使用现成镜像,需本地有Dockerfile) + restart: always # 容器退出后自动重启 + command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' # 容器启动后执行的命令:运行启动脚本 + ports: # 端口映射:主机8000端口 → 容器8000端口(Django默认开发服务器端口) - "8000:8000" - volumes: - - ./collectedstatic:/code/djangoblog/collectedstatic - - ./uploads:/code/djangoblog/uploads - environment: - - DJANGO_MYSQL_DATABASE=djangoblog - - DJANGO_MYSQL_USER=root - - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E - - DJANGO_MYSQL_HOST=db - - DJANGO_MYSQL_PORT=3306 - - DJANGO_MEMCACHED_LOCATION=memcached:11211 - - DJANGO_ELASTICSEARCH_HOST=es:9200 - links: + volumes: # 数据卷挂载:持久化应用数据/静态资源 + - ./collectedstatic:/code/djangoblog/collectedstatic # 主机静态资源目录 → 容器内静态资源目录(Nginx可直接访问) + - ./uploads:/code/djangoblog/uploads # 主机上传文件目录 → 容器内上传文件目录(如博客图片) + environment: # 环境变量配置:Django应用的关键参数(数据库、缓存、ES等) + - DJANGO_MYSQL_DATABASE=djangoblog # Django连接的MySQL数据库名 + - DJANGO_MYSQL_USER=root # MySQL用户名 + - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E # MySQL密码 + - DJANGO_MYSQL_HOST=db # MySQL服务地址(指向同网络内的"db"服务,需额外配置db服务) + - DJANGO_MYSQL_PORT=3306 # MySQL端口 + - DJANGO_MEMCACHED_LOCATION=memcached:11211 # Memcached缓存地址(指向同网络内的"memcached"服务,需额外配置) + - DJANGO_ELASTICSEARCH_HOST=es:9200 # ES服务地址(指向同网络内的"es"服务) + links: # 显式链接到其他服务(已逐步被depends_on替代,此处用于兼容) + - db # 链接到MySQL服务 + - memcached # 链接到Memcached服务 + depends_on: # 服务依赖:启动djangoblog前,先启动db服务(确保数据库就绪) - db - - memcached - depends_on: - - db - container_name: djangoblog - + container_name: djangoblog # 容器名称固定为"djangoblog" \ No newline at end of file -- 2.34.1 From ba2c6831804b14060286cdb5783a2cd817a03cba Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 12 Oct 2025 22:20:35 +0800 Subject: [PATCH 17/41] Update docker-compose.yml --- .../deploy/docker-compose/docker-compose.yml | 97 ++++++++++--------- 1 file changed, 52 insertions(+), 45 deletions(-) diff --git a/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml index 9609af3..902b118 100644 --- a/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml +++ b/src/DjangoBlog-master/deploy/docker-compose/docker-compose.yml @@ -1,60 +1,67 @@ +# Docker Compose配置文件,版本为3(指定Compose语法版本) version: '3' +# 定义所有服务(容器) services: + # 1. MySQL数据库服务(存储应用数据) db: - image: mysql:latest - restart: always - environment: - - MYSQL_DATABASE=djangoblog - - MYSQL_ROOT_PASSWORD=DjAnGoBlOg!2!Q@W#E - ports: + image: mysql:latest # 使用最新版MySQL镜像 + restart: always # 容器退出后自动重启(确保服务持续运行) + environment: # 环境变量配置(数据库初始化参数) + - MYSQL_DATABASE=djangoblog # 自动创建的数据库名称 + - MYSQL_ROOT_PASSWORD=DjAnGoBlOg!2!Q@W#E # MySQL root用户密码 + ports: # 端口映射:主机3306端口 → 容器3306端口(MySQL默认端口) - 3306:3306 - volumes: - - ./bin/datas/mysql/:/var/lib/mysql - depends_on: + volumes: # 数据卷挂载:持久化MySQL数据 + - ./bin/datas/mysql/:/var/lib/mysql # 主机目录 → 容器内MySQL数据存储目录 + depends_on: # 服务依赖:启动db前先启动redis(可能用于数据库缓存等场景) - redis - container_name: db + container_name: db # 容器名称固定为"db" + # 2. Django博客应用服务(核心应用) djangoblog: - build: - context: ../../ - restart: always - command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' - ports: + build: # 构建配置 + context: ../../ # 指定Dockerfile所在的上下文目录(上级目录的上级目录) + restart: always # 容器退出后自动重启 + command: bash -c 'sh /code/djangoblog/bin/docker_start.sh' # 启动命令:执行应用启动脚本 + ports: # 端口映射:主机8000端口 → 容器8000端口(Django应用端口) - "8000:8000" - volumes: - - ./collectedstatic:/code/djangoblog/collectedstatic - - ./logs:/code/djangoblog/logs - - ./uploads:/code/djangoblog/uploads - environment: - - DJANGO_MYSQL_DATABASE=djangoblog - - DJANGO_MYSQL_USER=root - - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E - - DJANGO_MYSQL_HOST=db - - DJANGO_MYSQL_PORT=3306 - - DJANGO_REDIS_URL=redis:6379 - links: + volumes: # 数据卷挂载:持久化应用数据和配置 + - ./collectedstatic:/code/djangoblog/collectedstatic # 静态资源目录(供Nginx访问) + - ./logs:/code/djangoblog/logs # 应用日志目录 + - ./uploads:/code/djangoblog/uploads # 用户上传文件目录(如图片) + environment: # 环境变量配置(应用连接参数) + - DJANGO_MYSQL_DATABASE=djangoblog # 数据库名称(与db服务对应) + - DJANGO_MYSQL_USER=root # 数据库用户名 + - DJANGO_MYSQL_PASSWORD=DjAnGoBlOg!2!Q@W#E # 数据库密码(与db服务对应) + - DJANGO_MYSQL_HOST=db # 数据库服务地址(指向同网络内的"db"服务) + - DJANGO_MYSQL_PORT=3306 # 数据库端口 + - DJANGO_REDIS_URL=redis:6379 # Redis服务地址(指向同网络内的"redis"服务) + links: # 显式链接到其他服务(用于容器间通信) + - db # 链接到MySQL服务 + - redis # 链接到Redis服务 + depends_on: # 服务依赖:启动djangoblog前先启动db服务(确保数据库就绪) - db - - redis - depends_on: - - db - container_name: djangoblog + container_name: djangoblog # 容器名称固定为"djangoblog" + + # 3. Nginx服务(反向代理和静态资源服务) nginx: - restart: always - image: nginx:latest - ports: + restart: always # 容器退出后自动重启 + image: nginx:latest # 使用最新版Nginx镜像 + ports: # 端口映射:HTTP(80)和HTTPS(443)端口 - "80:80" - "443:443" - volumes: - - ./bin/nginx.conf:/etc/nginx/nginx.conf - - ./collectedstatic:/code/djangoblog/collectedstatic - links: - - djangoblog:djangoblog - container_name: nginx + volumes: # 数据卷挂载:Nginx配置和静态资源 + - ./bin/nginx.conf:/etc/nginx/nginx.conf # 主机Nginx配置文件 → 容器内Nginx配置文件 + - ./collectedstatic:/code/djangoblog/collectedstatic # 静态资源目录(与djangoblog服务共享) + links: # 链接到djangoblog服务,实现反向代理 + - djangoblog:djangoblog # 将djangoblog服务映射为"djangoblog"主机名 + container_name: nginx # 容器名称固定为"nginx" + # 4. Redis服务(缓存服务,用于提升应用性能) redis: - restart: always - image: redis:latest - container_name: redis - ports: - - "6379:6379" + restart: always # 容器退出后自动重启 + image: redis:latest # 使用最新版Redis镜像 + container_name: redis # 容器名称固定为"redis" + ports: # 端口映射:主机6379端口 → 容器6379端口(Redis默认端口) + - "6379:6379" \ No newline at end of file -- 2.34.1 From 9f128c4f32913a02b6a626349dd2d1ab03bd7bac Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 18:10:11 +0800 Subject: [PATCH 18/41] ADD file via upload --- ...”软件系统的数据模型设计.docx | Bin 0 -> 210440 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/“电影评价”软件系统的数据模型设计.docx diff --git a/doc/“电影评价”软件系统的数据模型设计.docx b/doc/“电影评价”软件系统的数据模型设计.docx new file mode 100644 index 0000000000000000000000000000000000000000..8d282e09ed16ead1f7685b373acefc60776590ee GIT binary patch literal 210440 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

    iT){&Gp{h}0RigOFS`~|;`^g!PLj7a9s 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 Bg-`$h literal 0 HcmV?d00001 -- 2.34.1 From c70e63922df6e9dd9d3efcc41cd4fa0fbc115ced Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:33:23 +0800 Subject: [PATCH 19/41] Update configmap.yaml --- .../deploy/k8s/configmap.yaml | 177 +++++++++--------- 1 file changed, 91 insertions(+), 86 deletions(-) diff --git a/src/DjangoBlog-master/deploy/k8s/configmap.yaml b/src/DjangoBlog-master/deploy/k8s/configmap.yaml index 835d4ad..da23389 100644 --- a/src/DjangoBlog-master/deploy/k8s/configmap.yaml +++ b/src/DjangoBlog-master/deploy/k8s/configmap.yaml @@ -1,119 +1,124 @@ -apiVersion: v1 -kind: ConfigMap +apiVersion: v1 # Kubernetes API版本,v1为稳定版本 +kind: ConfigMap # 资源类型为ConfigMap,用于存储非敏感配置数据 metadata: - name: web-nginx-config - namespace: djangoblog -data: - nginx.conf: | - user nginx; - worker_processes auto; - error_log /var/log/nginx/error.log notice; - pid /var/run/nginx.pid; + name: web-nginx-config # ConfigMap名称,标识该Nginx配置资源 + namespace: djangoblog # 所属命名空间,用于资源隔离,对应djangoblog应用 +data: # 配置数据,键为文件名,值为文件内容 + nginx.conf: | # Nginx主配置文件 + user nginx; # Nginx进程运行的用户 + worker_processes auto; # 工作进程数,auto表示按CPU核心数自动分配 + error_log /var/log/nginx/error.log notice; # 错误日志路径及级别(notice级别) + pid /var/run/nginx.pid; # Nginx进程PID文件路径 - events { - worker_connections 1024; - multi_accept on; - use epoll; + events { # 事件处理配置块 + worker_connections 1024; # 每个工作进程最大连接数 + multi_accept on; # 允许工作进程同时接受多个新连接 + use epoll; # 使用epoll I/O模型(Linux下高效事件驱动模型) } - http { - include /etc/nginx/mime.types; - default_type application/octet-stream; + http { # HTTP核心配置块 + include /etc/nginx/mime.types; # 引入MIME类型映射文件(识别文件类型) + default_type application/octet-stream; # 默认MIME类型(未知类型时使用) + # 定义日志格式,命名为main log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; # 访问日志路径,使用main格式 - access_log /var/log/nginx/access.log main; + sendfile on; # 启用sendfile系统调用(高效传输文件) + keepalive_timeout 65; # 长连接超时时间(65秒) + gzip on; # 启用gzip压缩(减少传输数据量) + gzip_disable "msie6"; # 对IE6浏览器禁用gzip(兼容性处理) - sendfile on; - keepalive_timeout 65; - gzip on; - gzip_disable "msie6"; - - gzip_vary on; - gzip_proxied any; - gzip_comp_level 8; - gzip_buffers 16 8k; - gzip_http_version 1.1; + # gzip压缩补充配置 + gzip_vary on; # 启用Vary: Accept-Encoding响应头(告知代理缓存压缩/非压缩版本) + gzip_proxied any; # 对所有代理请求启用压缩 + gzip_comp_level 8; # 压缩级别(1-9,8为较高压缩率) + gzip_buffers 16 8k; # 压缩缓冲区大小(16个8k缓冲区) + gzip_http_version 1.1; # 仅对HTTP/1.1及以上版本启用压缩 + # 需压缩的文件类型(文本、JS、CSS、图片等) gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; - # Include server configurations - include /etc/nginx/conf.d/*.conf; + include /etc/nginx/conf.d/*.conf; # 引入其他服务器配置文件 } - djangoblog.conf: | - server { - server_name lylinux.net; - root /code/djangoblog/collectedstatic/; - listen 80; - keepalive_timeout 70; - location /static/ { - expires max; - alias /code/djangoblog/collectedstatic/; + djangoblog.conf: | # lylinux.net域名的Nginx站点配置 + server { # 处理lylinux.net域名的服务配置 + server_name lylinux.net; # 绑定的主域名 + root /code/djangoblog/collectedstatic/; # 网站根目录(静态文件目录) + listen 80; # 监听80端口(HTTP) + keepalive_timeout 70; # 该站点长连接超时时间 + + location /static/ { # 处理静态文件请求 + expires max; # 静态文件缓存有效期设为最大(长期缓存) + alias /code/djangoblog/collectedstatic/; # 静态文件实际路径 } + # 处理特定静态文件(如robots.txt、网站验证文件等) location ~* (robots\.txt|ads\.txt|favicon\.ico|favion\.ico|crossdomain\.xml|google93fd32dbd906620a\.html|BingSiteAuth\.xml|baidu_verify_Ijeny6KrmS\.html)$ { - root /resource/djangopub; - expires 1d; - access_log off; - error_log off; + root /resource/djangopub; # 这些文件的根目录 + expires 1d; # 缓存1天 + access_log off; # 关闭访问日志 + error_log off; # 关闭错误日志 } - location / { - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Host $http_host; - proxy_set_header X-NginX-Proxy true; - proxy_redirect off; + location / { # 处理其他所有请求(反向代理到Django) + # 设置代理请求头(传递客户端信息给后端) + proxy_set_header X-Real-IP $remote_addr; # 客户端真实IP + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 代理链IP列表 + proxy_set_header Host $http_host; # 原始请求Host + proxy_set_header X-NginX-Proxy true; # 标识经Nginx代理 + proxy_redirect off; # 禁用代理重定向 + + # 若请求文件不存在,反向代理到Django服务(djangoblog为K8s内部服务名) if (!-f $request_filename) { proxy_pass http://djangoblog:8000; break; } } } - server { - server_name www.lylinux.net; - listen 80; - return 301 https://lylinux.net$request_uri; + server { # 处理www.lylinux.net域名(重定向配置) + server_name www.lylinux.net; # 绑定的www子域名 + listen 80; # 监听80端口 + return 301 https://lylinux.net$request_uri; # 永久重定向到主域名HTTPS地址 } - resource.lylinux.net.conf: | + resource.lylinux.net.conf: | # resource.lylinux.net子域名的配置(资源服务器) server { - index index.html index.htm; - server_name resource.lylinux.net; - root /resource/; + index index.html index.htm; # 默认索引文件 + server_name resource.lylinux.net; # 绑定的资源子域名 + root /resource/; # 资源文件根目录 - location /djangoblog/ { - alias /code/djangoblog/collectedstatic/; + location /djangoblog/ { # 映射Django静态文件路径 + alias /code/djangoblog/collectedstatic/; # 实际静态文件路径 } - access_log off; - error_log off; - include lylinux/resource.conf; + access_log off; # 关闭访问日志 + error_log off; # 关闭错误日志 + include lylinux/resource.conf; # 引入通用资源配置 } - lylinux.resource.conf: | - expires max; - access_log off; - log_not_found off; - add_header Pragma public; - add_header Cache-Control "public"; - add_header "Access-Control-Allow-Origin" "*"; + lylinux.resource.conf: | # 通用资源配置(被资源服务器引用) + expires max; # 资源缓存有效期设为最大 + access_log off; # 关闭访问日志 + log_not_found off; # 关闭文件未找到的错误日志 + add_header Pragma public; # 缓存控制头(告知客户端可缓存) + add_header Cache-Control "public"; # 缓存控制头(公开可缓存) + add_header "Access-Control-Allow-Origin" "*"; # 允许跨域访问(所有域名) --- -apiVersion: v1 -kind: ConfigMap +apiVersion: v1 # Kubernetes API版本 +kind: ConfigMap # 资源类型为ConfigMap,存储环境变量 metadata: - name: djangoblog-env - namespace: djangoblog -data: - DJANGO_MYSQL_DATABASE: djangoblog - DJANGO_MYSQL_USER: db_user - DJANGO_MYSQL_PASSWORD: db_password - DJANGO_MYSQL_HOST: db_host - DJANGO_MYSQL_PORT: db_port - DJANGO_REDIS_URL: "redis:6379" - DJANGO_DEBUG: "False" - MYSQL_ROOT_PASSWORD: db_password - MYSQL_DATABASE: djangoblog - MYSQL_PASSWORD: db_password - DJANGO_SECRET_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx - + name: djangoblog-env # ConfigMap名称,标识Django环境变量配置 + namespace: djangoblog # 所属命名空间(与应用一致) +data: # 环境变量键值对 + DJANGO_MYSQL_DATABASE: djangoblog # Django连接的MySQL数据库名 + DJANGO_MYSQL_USER: db_user # MySQL登录用户名 + DJANGO_MYSQL_PASSWORD: db_password # MySQL登录密码 + DJANGO_MYSQL_HOST: db_host # MySQL服务地址(K8s内部服务名或IP) + DJANGO_MYSQL_PORT: db_port # MySQL服务端口 + DJANGO_REDIS_URL: "redis:6379" # Redis服务地址及端口 + DJANGO_DEBUG: "False" # Django调试模式(生产环境关闭) + MYSQL_ROOT_PASSWORD: db_password # MySQL root用户密码(用于初始化) + MYSQL_DATABASE: djangoblog # 初始化的MySQL数据库名 + MYSQL_PASSWORD: db_password # MySQL普通用户密码(与Django配置一致) + DJANGO_SECRET_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Django加密密钥(用于会话、CSRF等) \ No newline at end of file -- 2.34.1 From 0608b6b368c521d649bfae1824fd9fab9d917adb Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:38:09 +0800 Subject: [PATCH 20/41] Update deployment.yaml --- .../deploy/k8s/deployment.yaml | 222 +++++++++++------- 1 file changed, 137 insertions(+), 85 deletions(-) diff --git a/src/DjangoBlog-master/deploy/k8s/deployment.yaml b/src/DjangoBlog-master/deploy/k8s/deployment.yaml index 414fdcc..c448b50 100644 --- a/src/DjangoBlog-master/deploy/k8s/deployment.yaml +++ b/src/DjangoBlog-master/deploy/k8s/deployment.yaml @@ -1,132 +1,161 @@ +# 第一部分:Django 博客应用部署配置 +# apiVersion 指定 Kubernetes API 版本,apps/v1 是 Deployment 资源的稳定版本 apiVersion: apps/v1 +# kind 定义资源类型为 Deployment(用于管理Pod的创建和扩展) kind: Deployment metadata: + # Deployment 的名称 name: djangoblog + # 部署所在的命名空间(用于资源隔离) namespace: djangoblog + # 为 Deployment 添加标签(用于筛选和关联资源) labels: app: djangoblog spec: + # 副本数:指定运行的 Pod 数量为 3 个(实现高可用) replicas: 3 + # 选择器:用于匹配要管理的 Pod 标签(必须与下面 template.metadata.labels 一致) selector: matchLabels: app: djangoblog + # Pod 模板:定义要创建的 Pod 的规格 template: metadata: + # Pod 的标签(与上面的 selector.matchLabels 对应) labels: app: djangoblog spec: + # 容器列表:一个 Pod 可以包含多个容器,这里定义应用容器 containers: - - name: djangoblog + - name: djangoblog # 容器名称 + # 容器使用的镜像(Django 博客应用镜像) image: liangliangyy/djangoblog:latest + # 镜像拉取策略:Always 表示每次都从仓库拉取最新镜像 imagePullPolicy: Always + # 容器暴露的端口(Django 应用默认运行在 8000 端口) ports: - containerPort: 8000 + # 从配置映射(ConfigMap)中注入环境变量 envFrom: - configMapRef: - name: djangoblog-env + name: djangoblog-env # 引用的 ConfigMap 名称 + # 就绪探针:判断容器是否已准备好接收请求(服务发现会依赖此状态) readinessProbe: - httpGet: - path: / - port: 8000 - initialDelaySeconds: 10 - periodSeconds: 30 + httpGet: # 通过 HTTP 请求检查就绪状态 + path: / # 检查的路径(应用根目录) + port: 8000 # 检查的端口 + initialDelaySeconds: 10 # 容器启动后延迟 10 秒开始首次检查 + periodSeconds: 30 # 每隔 30 秒检查一次 + # 存活探针:判断容器是否存活,若失败会重启容器 livenessProbe: - httpGet: - path: / - port: 8000 - initialDelaySeconds: 10 - periodSeconds: 30 + httpGet: # 通过 HTTP 请求检查存活状态 + path: / # 检查的路径 + port: 8000 # 检查的端口 + initialDelaySeconds: 10 # 容器启动后延迟 10 秒开始首次检查 + periodSeconds: 30 # 每隔 30 秒检查一次 + # 资源限制:控制容器对 CPU 和内存的使用 resources: - requests: - cpu: 10m - memory: 100Mi - limits: - cpu: "2" - memory: 2Gi + requests: # 资源请求(调度时的最小需求) + cpu: 10m # 10 毫核 CPU(1核=1000m) + memory: 100Mi # 100 兆内存 + limits: # 资源限制(容器最大可使用的资源) + cpu: "2" # 2 核 CPU + memory: 2Gi # 2 吉内存 + # 卷挂载:将持久卷挂载到容器内的指定路径 volumeMounts: - - name: djangoblog - mountPath: /code/djangoblog/collectedstatic - - name: resource - mountPath: /resource + - name: djangoblog # 引用下面 volumes 中定义的卷名称 + mountPath: /code/djangoblog/collectedstatic # 容器内的挂载路径(Django 静态文件目录) + - name: resource # 引用资源卷 + mountPath: /resource # 容器内的资源文件目录 + # 卷定义:声明需要挂载的持久卷 volumes: - - name: djangoblog - persistentVolumeClaim: - claimName: djangoblog-pvc - - name: resource + - name: djangoblog # 卷名称(与上面 volumeMounts.name 对应) + persistentVolumeClaim: # 使用持久卷声明(PVC) + claimName: djangoblog-pvc # 引用的 PVC 名称(需提前创建) + - name: resource # 资源卷名称 persistentVolumeClaim: - claimName: resource-pvc + claimName: resource-pvc # 资源对应的 PVC 名称 ---- + +# 第二部分:Redis 缓存服务部署配置 +--- # 分隔符:用于在一个文件中定义多个 Kubernetes 资源 apiVersion: apps/v1 kind: Deployment metadata: - name: redis - namespace: djangoblog + name: redis # Redis 部署名称 + namespace: djangoblog # 同属 djangoblog 命名空间 labels: - app: redis + app: redis # Redis 标签 spec: - replicas: 1 + replicas: 1 # Redis 单副本(简单部署,生产环境可能需要集群) selector: matchLabels: - app: redis + app: redis # 匹配 Redis Pod 标签 template: metadata: labels: - app: redis + app: redis # Pod 标签 spec: containers: - - name: redis - image: redis:latest + - name: redis # 容器名称 + image: redis:latest # Redis 官方最新镜像 + # 镜像拉取策略:IfNotPresent 表示本地有则使用本地镜像,否则拉取 imagePullPolicy: IfNotPresent ports: - - containerPort: 6379 + - containerPort: 6379 # Redis 默认端口 + # 资源限制(Redis 对资源需求较低) resources: requests: cpu: 10m memory: 100Mi limits: - cpu: 200m + cpu: 200m # 限制最大 200 毫核 CPU memory: 2Gi - + + +# 第三部分:MySQL 数据库部署配置 --- apiVersion: apps/v1 kind: Deployment metadata: - name: db + name: db # 数据库部署名称 namespace: djangoblog labels: - app: db + app: db # 数据库标签 spec: - replicas: 1 + replicas: 1 # 数据库单副本(生产环境需考虑主从或集群) selector: matchLabels: - app: db + app: db # 匹配数据库 Pod 标签 template: metadata: labels: - app: db + app: db # Pod 标签 spec: containers: - - name: db - image: mysql:latest + - name: db # 容器名称 + image: mysql:latest # MySQL 官方最新镜像 imagePullPolicy: IfNotPresent ports: - - containerPort: 3306 + - containerPort: 3306 # MySQL 默认端口 + # 从 ConfigMap 注入环境变量(如数据库密码、用户名等) envFrom: - configMapRef: - name: djangoblog-env + name: djangoblog-env # 复用 Django 应用的环境变量配置 + # 就绪探针:通过执行 mysqladmin ping 检查数据库是否就绪 readinessProbe: - exec: + exec: # 执行命令检查 command: - mysqladmin - ping - "-h" - - "127.0.0.1" + - "127.0.0.1" # 数据库主机(容器内本地) - "-u" - - "root" - - "-p$MYSQL_ROOT_PASSWORD" - initialDelaySeconds: 10 - periodSeconds: 10 + - "root" # 用户名 + - "-p$MYSQL_ROOT_PASSWORD" # 密码(从环境变量获取) + initialDelaySeconds: 10 # 延迟 10 秒检查 + periodSeconds: 10 # 每 10 秒检查一次 + # 存活探针:同就绪探针,确保数据库存活 livenessProbe: exec: command: @@ -139,6 +168,7 @@ spec: - "-p$MYSQL_ROOT_PASSWORD" initialDelaySeconds: 10 periodSeconds: 10 + # 资源限制(数据库对资源需求较高) resources: requests: cpu: 10m @@ -146,38 +176,42 @@ spec: limits: cpu: "2" memory: 2Gi + # 挂载数据库数据目录(持久化存储,避免数据丢失) volumeMounts: - - name: db-data - mountPath: /var/lib/mysql + - name: db-data # 引用数据卷 + mountPath: /var/lib/mysql # MySQL 数据存储路径 volumes: - - name: db-data + - name: db-data # 数据卷名称 persistentVolumeClaim: - claimName: db-pvc - + claimName: db-pvc # 数据库对应的 PVC 名称 + + +# 第四部分:Nginx 反向代理部署配置 --- apiVersion: apps/v1 kind: Deployment metadata: - name: nginx + name: nginx # Nginx 部署名称 namespace: djangoblog labels: - app: nginx + app: nginx # Nginx 标签 spec: - replicas: 1 + replicas: 1 # Nginx 单副本 selector: matchLabels: - app: nginx + app: nginx # 匹配 Nginx Pod 标签 template: metadata: labels: - app: nginx + app: nginx # Pod 标签 spec: containers: - - name: nginx - image: nginx:latest + - name: nginx # 容器名称 + image: nginx:latest # Nginx 官方最新镜像 imagePullPolicy: IfNotPresent ports: - - containerPort: 80 + - containerPort: 80 # Nginx 默认端口 + # 资源限制 resources: requests: cpu: 10m @@ -185,67 +219,82 @@ spec: limits: cpu: "2" memory: 2Gi + # 卷挂载:挂载配置文件和静态资源 volumeMounts: + # 挂载 Nginx 主配置文件(subPath 表示只挂载单个文件,而非目录) - name: nginx-config mountPath: /etc/nginx/nginx.conf subPath: nginx.conf + # 挂载默认站点配置 - name: nginx-config mountPath: /etc/nginx/conf.d/default.conf subPath: djangoblog.conf + # 挂载资源站点配置 - name: nginx-config mountPath: /etc/nginx/conf.d/resource.lylinux.net.conf subPath: resource.lylinux.net.conf + # 挂载额外的资源配置 - name: nginx-config mountPath: /etc/nginx/lylinux/resource.conf subPath: lylinux.resource.conf + # 挂载 Django 静态文件目录(与 Django 应用共享存储) - name: djangoblog-pvc mountPath: /code/djangoblog/collectedstatic + # 挂载资源文件目录 - name: resource-pvc mountPath: /resource volumes: + # Nginx 配置卷:通过 ConfigMap 挂载配置文件(避免在镜像中硬编码配置) - name: nginx-config configMap: - name: web-nginx-config + name: web-nginx-config # 引用的 ConfigMap 名称 + # 挂载 Django 静态文件对应的 PVC - name: djangoblog-pvc persistentVolumeClaim: claimName: djangoblog-pvc + # 挂载资源文件对应的 PVC - name: resource-pvc persistentVolumeClaim: claimName: resource-pvc + +# 第五部分:Elasticsearch 搜索引擎部署配置 --- apiVersion: apps/v1 kind: Deployment metadata: - name: elasticsearch + name: elasticsearch # ES 部署名称 namespace: djangoblog labels: - app: elasticsearch + app: elasticsearch # ES 标签 spec: - replicas: 1 + replicas: 1 # ES 单节点(生产环境需集群) selector: matchLabels: - app: elasticsearch + app: elasticsearch # 匹配 ES Pod 标签 template: metadata: labels: - app: elasticsearch + app: elasticsearch # Pod 标签 spec: containers: - - name: elasticsearch + - name: elasticsearch # 容器名称 + # 带 IK 分词器的 ES 镜像(适用于中文搜索) image: liangliangyy/elasticsearch-analysis-ik:8.6.1 imagePullPolicy: IfNotPresent + # ES 环境变量配置 env: - - name: discovery.type + - name: discovery.type # 单节点模式(无需集群发现) value: single-node - - name: ES_JAVA_OPTS + - name: ES_JAVA_OPTS # JVM 内存配置(根据需求调整) value: "-Xms256m -Xmx256m" - - name: xpack.security.enabled + - name: xpack.security.enabled # 关闭安全验证(简化部署) value: "false" - - name: xpack.monitoring.templates.enabled + - name: xpack.monitoring.templates.enabled # 关闭监控模板 value: "false" ports: - - containerPort: 9200 + - containerPort: 9200 # ES HTTP 接口端口 + # 资源限制(ES 对内存需求较高) resources: requests: cpu: 10m @@ -253,22 +302,25 @@ spec: limits: cpu: "2" memory: 2Gi + # 就绪探针:检查 ES 是否就绪 readinessProbe: httpGet: - path: / + path: / # ES 健康检查路径 port: 9200 - initialDelaySeconds: 15 + initialDelaySeconds: 15 # 延迟 15 秒(ES 启动较慢) periodSeconds: 30 + # 存活探针:检查 ES 是否存活 livenessProbe: httpGet: path: / port: 9200 initialDelaySeconds: 15 periodSeconds: 30 + # 挂载 ES 数据目录(持久化存储索引数据) volumeMounts: - name: elasticsearch-data - mountPath: /usr/share/elasticsearch/data/ + mountPath: /usr/share/elasticsearch/data/ # ES 数据存储路径 volumes: - - name: elasticsearch-data - persistentVolumeClaim: - claimName: elasticsearch-pvc + - name: elasticsearch-data + persistentVolumeClaim: + claimName: elasticsearch-pvc # ES 对应的 PVC 名称 \ No newline at end of file -- 2.34.1 From 3cbb7029a6afee9104915b82343830a3c5e14ff5 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:40:58 +0800 Subject: [PATCH 21/41] Update gateway.yaml --- src/DjangoBlog-master/deploy/k8s/gateway.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/DjangoBlog-master/deploy/k8s/gateway.yaml b/src/DjangoBlog-master/deploy/k8s/gateway.yaml index a8de073..c81cf30 100644 --- a/src/DjangoBlog-master/deploy/k8s/gateway.yaml +++ b/src/DjangoBlog-master/deploy/k8s/gateway.yaml @@ -1,17 +1,31 @@ +# Ingress 资源配置(用于管理外部访问集群内服务的规则) +# apiVersion 指定 Kubernetes API 版本,networking.k8s.io/v1 是 Ingress 的稳定版本 apiVersion: networking.k8s.io/v1 +# kind 定义资源类型为 Ingress(用于配置外部访问规则) kind: Ingress metadata: + # Ingress 资源的名称 name: nginx + # 所属命名空间(与前面的部署资源保持一致,确保资源在同一命名空间内可访问) namespace: djangoblog spec: + # 指定 Ingress 控制器的类别(需提前部署对应类别的 Ingress Controller,这里使用 nginx 类型) ingressClassName: nginx + # 访问规则定义(外部请求如何路由到集群内的服务) rules: + # 未指定 host 表示匹配所有未被其他规则匹配的主机(可理解为默认规则) - http: + # HTTP 协议的路由规则 paths: + # 路径规则:匹配以 / 开头的所有请求(即所有路径) - path: / + # 路径匹配类型:Prefix 表示前缀匹配(/ 会匹配所有路径) pathType: Prefix + # 后端服务配置:请求转发到哪个服务 backend: service: + # 目标服务的名称(需提前创建名为 nginx 的 Service,关联到 nginx 部署的 Pod) name: nginx + # 目标服务的端口号(对应 nginx 服务暴露的 80 端口) port: number: 80 \ No newline at end of file -- 2.34.1 From 7fc0472a7d4199b94416a0bc8a76496b895bf109 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:42:00 +0800 Subject: [PATCH 22/41] Update pv.yaml --- src/DjangoBlog-master/deploy/k8s/pv.yaml | 73 +++++++++++++----------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/src/DjangoBlog-master/deploy/k8s/pv.yaml b/src/DjangoBlog-master/deploy/k8s/pv.yaml index 874b72f..4e48545 100644 --- a/src/DjangoBlog-master/deploy/k8s/pv.yaml +++ b/src/DjangoBlog-master/deploy/k8s/pv.yaml @@ -1,40 +1,44 @@ -apiVersion: v1 -kind: PersistentVolume +# 第一部分:数据库(MySQL)专用持久卷配置 +apiVersion: v1 # PV 资源使用的 Kubernetes API 版本 +kind: PersistentVolume # 资源类型为持久卷(PV),用于提供集群级别的存储资源 metadata: - name: local-pv-db + name: local-pv-db # PV 的名称,需唯一,这里明确关联数据库(db) spec: - capacity: - storage: 10Gi - volumeMode: Filesystem - accessModes: - - ReadWriteOnce - persistentVolumeReclaimPolicy: Retain - storageClassName: local-storage - local: - path: /mnt/local-storage-db - nodeAffinity: - required: + capacity: # 定义 PV 的存储容量 + storage: 10Gi # 分配 10GiB 存储空间(数据库通常需要较大空间) + volumeMode: Filesystem # 卷模式:Filesystem 表示以文件系统形式挂载(另一种是 Block 块设备) + accessModes: # 访问模式:定义 PV 可被如何访问 + - ReadWriteOnce # 仅允许单个节点以读写方式挂载(适合数据库等需独占写入的场景) + persistentVolumeReclaimPolicy: Retain # 回收策略:Retain 表示 PV 被释放后保留数据,需手动清理 + storageClassName: local-storage # 存储类名称,用于与 PersistentVolumeClaim(PVC)匹配 + local: # 声明为本地存储(使用节点上的本地磁盘,非分布式存储) + path: /mnt/local-storage-db # 本地存储的实际路径(需在对应节点上提前创建该目录) + nodeAffinity: # 节点亲和性:限制 PV 只能被特定节点使用(本地存储必须配置) + required: # 强制要求:必须满足以下条件才能使用该 PV nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/hostname - operator: In + - matchExpressions: # 匹配规则 + - key: kubernetes.io/hostname # 匹配节点的主机名标签 + operator: In # 操作符:In 表示值在指定列表中 values: - - master ---- + - master # 仅允许主机名为 "master" 的节点使用该 PV + + +# 第二部分:Django 应用静态文件专用持久卷配置 +--- # 分隔符:用于在一个文件中定义多个资源 apiVersion: v1 kind: PersistentVolume metadata: - name: local-pv-djangoblog + name: local-pv-djangoblog # PV 名称,关联 Django 应用 spec: capacity: - storage: 5Gi + storage: 5Gi # 分配 5GiB 存储空间(静态文件需求较小) volumeMode: Filesystem accessModes: - - ReadWriteOnce + - ReadWriteOnce # 单节点读写(静态文件通常由单节点写入,多节点读取可考虑 ReadOnlyMany) persistentVolumeReclaimPolicy: Retain - storageClassName: local-storage + storageClassName: local-storage # 与前面的 PV 共用同一存储类 local: - path: /mnt/local-storage-djangoblog + path: /mnt/local-storage-djangoblog # Django 静态文件的本地存储路径 nodeAffinity: required: nodeSelectorTerms: @@ -42,24 +46,25 @@ spec: - key: kubernetes.io/hostname operator: In values: - - master + - master # 同样限制在 "master" 节点 +# 第三部分:资源文件专用持久卷配置 --- apiVersion: v1 kind: PersistentVolume metadata: - name: local-pv-resource + name: local-pv-resource # PV 名称,关联通用资源文件 spec: capacity: - storage: 5Gi + storage: 5Gi # 分配 5GiB 存储空间 volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: - path: /mnt/resource/ + path: /mnt/resource/ # 资源文件(如上传的图片、附件等)的本地存储路径 nodeAffinity: required: nodeSelectorTerms: @@ -67,23 +72,25 @@ spec: - key: kubernetes.io/hostname operator: In values: - - master + - master # 限制在 "master" 节点 + +# 第四部分:Elasticsearch 搜索引擎专用持久卷配置 --- apiVersion: v1 kind: PersistentVolume metadata: - name: local-pv-elasticsearch + name: local-pv-elasticsearch # PV 名称,关联 Elasticsearch spec: capacity: - storage: 5Gi + storage: 5Gi # 分配 5GiB 存储空间(用于存储 ES 索引数据) volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: - path: /mnt/local-storage-elasticsearch + path: /mnt/local-storage-elasticsearch # ES 数据的本地存储路径 nodeAffinity: required: nodeSelectorTerms: @@ -91,4 +98,4 @@ spec: - key: kubernetes.io/hostname operator: In values: - - master \ No newline at end of file + - master # 限制在 "master" 节点 \ No newline at end of file -- 2.34.1 From 680adcd420b0c0a716be7fbae15e7e6c7c673f0b Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:44:11 +0800 Subject: [PATCH 23/41] Update pvc.yaml --- src/DjangoBlog-master/deploy/k8s/pvc.yaml | 60 +++++++++++++---------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/src/DjangoBlog-master/deploy/k8s/pvc.yaml b/src/DjangoBlog-master/deploy/k8s/pvc.yaml index ef238c5..b1cff4b 100644 --- a/src/DjangoBlog-master/deploy/k8s/pvc.yaml +++ b/src/DjangoBlog-master/deploy/k8s/pvc.yaml @@ -1,60 +1,66 @@ -apiVersion: v1 -kind: PersistentVolumeClaim +# 第一部分:数据库(MySQL)持久卷声明(PVC) +# PVC 用于向 Kubernetes 请求存储资源,需与 PV 匹配后才能供 Pod 使用 +apiVersion: v1 # PVC 资源对应的 Kubernetes API 版本 +kind: PersistentVolumeClaim # 资源类型为持久卷声明(PVC) metadata: - name: db-pvc - namespace: djangoblog + name: db-pvc # PVC 名称,需与数据库 Deployment 中引用的 PVC 名称一致 + namespace: djangoblog # 所属命名空间,与数据库 Deployment、对应 PV 保持一致(资源隔离) spec: - storageClassName: local-storage - volumeName: local-pv-db - accessModes: - - ReadWriteOnce - resources: + storageClassName: local-storage # 存储类名称,必须与目标 PV 的 storageClassName 完全匹配(用于筛选 PV) + volumeName: local-pv-db # 显式指定绑定的 PV 名称(强制绑定,非必填;不指定则按条件自动匹配) + accessModes: # 访问模式,需与目标 PV 的 accessModes 兼容(否则无法绑定) + - ReadWriteOnce # 单节点读写模式,与数据库 PV 的访问模式一致(满足数据库独占写入需求) + resources: # 存储资源请求,定义需要的存储容量 requests: - storage: 10Gi + storage: 10Gi # 请求 10GiB 存储空间,需小于或等于目标 PV 的 capacity(此处与 db PV 容量完全匹配) ---- +# 第二部分:Django 应用静态文件持久卷声明(PVC) +--- # 资源分隔符,用于在单个文件中定义多个 Kubernetes 资源 apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: djangoblog-pvc + name: djangoblog-pvc # PVC 名称,需与 Django Deployment 中 volumeMounts 引用的 PVC 名称一致 namespace: djangoblog spec: - volumeName: local-pv-djangoblog - storageClassName: local-storage + volumeName: local-pv-djangoblog # 显式绑定 Django 应用专用 PV + storageClassName: local-storage # 与 Django 应用 PV 的存储类一致 accessModes: - - ReadWriteOnce + - ReadWriteOnce # 单节点读写,与 Django 应用 PV 访问模式匹配 resources: requests: - storage: 5Gi + storage: 5Gi # 请求 5GiB 存储空间,与 Django 应用 PV 容量一致(用于存储静态文件) + +# 第三部分:资源文件(如上传附件、图片)持久卷声明(PVC) --- apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: resource-pvc + name: resource-pvc # PVC 名称,需与 Django、Nginx Deployment 中引用的资源卷 PVC 名称一致 namespace: djangoblog spec: - volumeName: local-pv-resource - storageClassName: local-storage + volumeName: local-pv-resource # 显式绑定资源文件专用 PV + storageClassName: local-storage # 与资源文件 PV 的存储类一致 accessModes: - - ReadWriteOnce + - ReadWriteOnce # 单节点读写,与资源文件 PV 访问模式匹配 resources: requests: - storage: 5Gi + storage: 5Gi # 请求 5GiB 存储空间,与资源文件 PV 容量一致 + +# 第四部分:Elasticsearch(搜索引擎)持久卷声明(PVC) --- apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: elasticsearch-pvc + name: elasticsearch-pvc # PVC 名称,需与 Elasticsearch Deployment 中引用的 PVC 名称一致 namespace: djangoblog spec: - volumeName: local-pv-elasticsearch - storageClassName: local-storage + volumeName: local-pv-elasticsearch # 显式绑定 Elasticsearch 专用 PV + storageClassName: local-storage # 与 Elasticsearch PV 的存储类一致 accessModes: - - ReadWriteOnce + - ReadWriteOnce # 单节点读写,与 Elasticsearch PV 访问模式匹配 resources: requests: - storage: 5Gi - \ No newline at end of file + storage: 5Gi # 请求 5GiB 存储空间,与 Elasticsearch PV 容量一致(用于存储索引数据) \ No newline at end of file -- 2.34.1 From cc830e805054dbad670be81646d5f7cb437dc23d Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:47:02 +0800 Subject: [PATCH 24/41] Update service.yaml --- src/DjangoBlog-master/deploy/k8s/service.yaml | 79 +++++++++++-------- 1 file changed, 46 insertions(+), 33 deletions(-) diff --git a/src/DjangoBlog-master/deploy/k8s/service.yaml b/src/DjangoBlog-master/deploy/k8s/service.yaml index 4ef2931..c361b9f 100644 --- a/src/DjangoBlog-master/deploy/k8s/service.yaml +++ b/src/DjangoBlog-master/deploy/k8s/service.yaml @@ -1,80 +1,93 @@ -apiVersion: v1 -kind: Service +# 第一部分:Django 应用服务(Service) +# Service 用于为集群内的 Pod 提供稳定网络访问地址,实现 Pod 访问的负载均衡和服务发现 +apiVersion: v1 # Service 资源对应的 Kubernetes API 版本 +kind: Service # 资源类型为 Service metadata: - name: djangoblog - namespace: djangoblog + name: djangoblog # Service 名称,需与其他组件(如 Nginx 配置)中引用的服务名一致 + namespace: djangoblog # 所属命名空间,与 Django Deployment、其他组件保持一致(资源隔离) labels: - app: djangoblog + app: djangoblog # 服务标签,用于筛选和管理服务资源 spec: - selector: + selector: # 标签选择器:通过标签匹配要管理的 Pod(必须与 Django Pod 的标签一致) app: djangoblog - ports: - - protocol: TCP - port: 8000 - targetPort: 8000 - type: ClusterIP ---- + ports: # 端口配置:定义服务暴露的端口与 Pod 端口的映射关系 + - protocol: TCP # 网络协议,默认 TCP(常用还有 UDP) + port: 8000 # 服务暴露给集群内部的端口(其他组件通过此端口访问该服务) + targetPort: 8000 # 服务转发请求到 Pod 的目标端口(需与 Django 容器暴露的端口一致) + type: ClusterIP # 服务类型:ClusterIP 表示仅在集群内部暴露服务,外部无法直接访问(适合内部组件通信) + + +# 第二部分:Nginx 服务(Service) +--- # 资源分隔符,用于在单个文件中定义多个 Kubernetes 资源 apiVersion: v1 kind: Service metadata: - name: nginx + name: nginx # Service 名称,需与 Ingress 配置中引用的服务名一致 namespace: djangoblog labels: app: nginx spec: selector: - app: nginx + app: nginx # 匹配 Nginx Pod 的标签 ports: - protocol: TCP - port: 80 - targetPort: 80 - type: ClusterIP + port: 80 # 服务暴露的端口(Ingress 转发请求到该端口) + targetPort: 80 # 转发到 Nginx 容器暴露的 80 端口 + type: ClusterIP # 集群内部访问(外部通过 Ingress 间接访问 Nginx 服务) + + +# 第三部分:Redis 缓存服务(Service) --- apiVersion: v1 kind: Service metadata: - name: redis + name: redis # Service 名称,需与 Django 应用配置中访问 Redis 的服务名一致 namespace: djangoblog labels: app: redis spec: selector: - app: redis + app: redis # 匹配 Redis Pod 的标签 ports: - protocol: TCP - port: 6379 - targetPort: 6379 - type: ClusterIP + port: 6379 # 服务暴露的端口(Redis 默认端口) + targetPort: 6379 # 转发到 Redis 容器暴露的 6379 端口 + type: ClusterIP # 仅集群内部访问(缓存服务无需外部暴露) + + +# 第四部分:MySQL 数据库服务(Service) --- apiVersion: v1 kind: Service metadata: - name: db + name: db # Service 名称,需与 Django 应用配置中访问数据库的服务名一致 namespace: djangoblog labels: app: db spec: selector: - app: db + app: db # 匹配 MySQL Pod 的标签 ports: - protocol: TCP - port: 3306 - targetPort: 3306 - type: ClusterIP + port: 3306 # 服务暴露的端口(MySQL 默认端口) + targetPort: 3306 # 转发到 MySQL 容器暴露的 3306 端口 + type: ClusterIP # 仅集群内部访问(数据库服务禁止外部直接访问,保障安全) + + +# 第五部分:Elasticsearch 搜索引擎服务(Service) --- apiVersion: v1 kind: Service metadata: - name: elasticsearch + name: elasticsearch # Service 名称,需与 Django 应用配置中访问 ES 的服务名一致 namespace: djangoblog labels: app: elasticsearch spec: selector: - app: elasticsearch + app: elasticsearch # 匹配 Elasticsearch Pod 的标签 ports: - protocol: TCP - port: 9200 - targetPort: 9200 - type: ClusterIP - + port: 9200 # 服务暴露的端口(ES HTTP 接口默认端口) + targetPort: 9200 # 转发到 ES 容器暴露的 9200 端口 + type: ClusterIP # 仅集群内部访问(搜索引擎无需外部直接暴露) \ No newline at end of file -- 2.34.1 From 19ca004489f6efd097f91a41eaf977ce6cd9ff84 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:47:57 +0800 Subject: [PATCH 25/41] Update storageclass.yaml --- .../deploy/k8s/storageclass.yaml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/DjangoBlog-master/deploy/k8s/storageclass.yaml b/src/DjangoBlog-master/deploy/k8s/storageclass.yaml index 5d5a14c..0063318 100644 --- a/src/DjangoBlog-master/deploy/k8s/storageclass.yaml +++ b/src/DjangoBlog-master/deploy/k8s/storageclass.yaml @@ -1,10 +1,20 @@ +# StorageClass 资源配置(用于定义存储资源的类型和动态供应策略) +# apiVersion 指定 Kubernetes API 版本,storage.k8s.io/v1 是 StorageClass 的稳定版本 apiVersion: storage.k8s.io/v1 +# kind 定义资源类型为 StorageClass(用于统一管理存储资源的属性) kind: StorageClass metadata: + # StorageClass 的名称,需与前面 PV 和 PVC 中指定的 storageClassName 一致 name: local-storage + # 注解:设置为默认存储类(当 PVC 未指定 storageClassName 时,自动使用此存储类) annotations: storageclass.kubernetes.io/is-default-class: "true" -provisioner: kubernetes.io/no-provisioner -volumeBindingMode: Immediate - +spec: + # 存储供应器:指定用于动态创建 PV 的插件(此处使用 no-provisioner 表示不支持动态供应) + # 因为前面的 PV 是手动创建的本地存储,无需动态生成,所以使用此供应器 + provisioner: kubernetes.io/no-provisioner + # 卷绑定模式:Immediate 表示 PVC 创建后立即尝试绑定可用的 PV(不等待 Pod 调度) + # 对于本地存储,若使用 WaitForFirstConsumer 模式会更合适(等待 Pod 调度后再绑定对应节点的 PV) + # 此处配置为 Immediate,需确保 PV 已提前创建且满足 PVC 条件 + volumeBindingMode: Immediate -- 2.34.1 From 526c31062bee1f4650afdca7b6bcab29ecd6f240 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:49:42 +0800 Subject: [PATCH 26/41] Update nginx.conf --- src/DjangoBlog-master/deploy/nginx.conf | 44 +++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/src/DjangoBlog-master/deploy/nginx.conf b/src/DjangoBlog-master/deploy/nginx.conf index 32161d8..ce2582f 100644 --- a/src/DjangoBlog-master/deploy/nginx.conf +++ b/src/DjangoBlog-master/deploy/nginx.conf @@ -1,50 +1,82 @@ -user nginx; +# Nginx 核心配置文件,用于处理静态资源和反向代理请求到 Django 应用 +# 全局配置段:设置 Nginx 整体运行参数 +nginx; # 标识该文件为 Nginx 配置文件(固定起始标识) +# 工作进程数:auto 表示自动根据服务器 CPU 核心数分配(优化并发性能) worker_processes auto; +# 错误日志配置:指定日志路径和日志级别(notice 级别记录重要信息,不冗余) error_log /var/log/nginx/error.log notice; +# PID 文件路径:存储 Nginx 主进程 ID,用于管理 Nginx 进程(如重启、停止) pid /var/run/nginx.pid; +# 事件模块配置:控制 Nginx 网络连接相关参数 events { + # 单个工作进程允许的最大并发连接数(1024 为基础值,可根据服务器性能调整) worker_connections 1024; } +# HTTP 模块配置:处理 HTTP 请求的核心配置,包含全局规则和虚拟主机 http { + # 引入 MIME 类型映射文件:定义不同文件后缀对应的 Content-Type(如 .html 对应 text/html) include /etc/nginx/mime.types; + # 默认 MIME 类型:当文件类型未匹配时,默认使用二进制流类型(避免浏览器直接解析未知文件) default_type application/octet-stream; + # 日志格式定义:自定义访问日志的记录字段,命名为 main log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; - + # 访问日志配置:使用上面定义的 main 格式,指定日志存储路径 access_log /var/log/nginx/access.log main; + # 开启高效文件传输模式:使用内核零拷贝技术,提升静态文件传输效率 sendfile on; - #tcp_nopush on; + # tcp_nopush on; # 可选配置:开启后会累积数据包再发送,适合大文件传输,默认关闭 + # 长连接超时时间:客户端与 Nginx 保持连接的最长时间(65 秒,超时后自动断开) keepalive_timeout 65; - #gzip on; + # gzip on; # 可选配置:开启 Gzip 压缩,减少传输带宽,默认关闭 + + # 虚拟主机配置:定义一个具体的站点规则(处理 80 端口的 HTTP 请求) server { + # 站点根目录:默认请求的文件查找路径(此处指向 Django 静态文件目录) root /code/djangoblog/collectedstatic/; + # 监听端口:该虚拟主机处理 80 端口的请求(Nginx 默认 HTTP 端口) listen 80; + # 长连接超时时间:覆盖 HTTP 模块的全局配置,仅作用于当前虚拟主机 keepalive_timeout 70; + + # 静态资源路径规则:匹配以 /static/ 开头的请求(处理 Django 静态文件) location /static/ { + # 缓存控制:设置静态文件缓存时间为最大(浏览器会长期缓存,减少重复请求) expires max; + # 路径别名:将 /static/ 请求映射到实际的静态文件目录(与 root 配合确保路径正确) alias /code/djangoblog/collectedstatic/; } + + # 默认路径规则:匹配所有未被上面规则匹配的请求(转发到 Django 应用) location / { + # 转发请求头:传递客户端真实 IP 到 Django(否则 Django 会认为请求来自 Nginx) proxy_set_header X-Real-IP $remote_addr; + # 转发请求头:传递客户端 IP 列表(适用于多层代理场景) proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # 转发请求头:传递原始请求的 Host 头(确保 Django 正确识别请求域名) proxy_set_header Host $http_host; + # 转发标识:告诉 Django 请求来自 Nginx 代理 proxy_set_header X-NginX-Proxy true; + # 关闭重定向处理:禁止 Nginx 自动修改 Django 返回的重定向地址 proxy_redirect off; + + # 条件判断:如果请求的文件在 Nginx 本地不存在(非静态文件) if (!-f $request_filename) { + # 反向代理:将请求转发到 Django 服务(通过 Kubernetes Service 名称 djangoblog 的 8000 端口) proxy_pass http://djangoblog:8000; - break; + break; # 跳出条件判断,不再执行后续规则 } } } -} +} \ No newline at end of file -- 2.34.1 From 66b18afadd6ac3375f7103399be1d31fd577d519 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:54:51 +0800 Subject: [PATCH 27/41] Update hook_constants.py --- .../djangoblog/plugin_manage/hook_constants.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py b/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py index 6685b7c..3205d2e 100644 --- a/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py +++ b/src/DjangoBlog-master/djangoblog/plugin_manage/hook_constants.py @@ -1,7 +1,11 @@ -ARTICLE_DETAIL_LOAD = 'article_detail_load' -ARTICLE_CREATE = 'article_create' -ARTICLE_UPDATE = 'article_update' -ARTICLE_DELETE = 'article_delete' - -ARTICLE_CONTENT_HOOK_NAME = "the_content" +# 文章相关操作的标识常量:用于统一管理操作类型,避免硬编码字符串导致的不一致问题 +# 场景:可用于日志记录、统计分析、权限校验等,通过常量标识具体操作 +ARTICLE_DETAIL_LOAD = 'article_detail_load' # 文章详情页加载操作标识(如用户访问某篇文章详情时使用) +ARTICLE_CREATE = 'article_create' # 文章创建操作标识(如用户发布新文章时使用) +ARTICLE_UPDATE = 'article_update' # 文章更新操作标识(如用户编辑已发布文章时使用) +ARTICLE_DELETE = 'article_delete' # 文章删除操作标识(如用户删除某篇文章时使用) +# 文章内容钩子(Hook)名称常量:用于定义文章内容处理的钩子函数/扩展点名称 +# 场景:在 Django 等框架中,可通过钩子机制对文章内容进行自定义处理(如过滤敏感词、添加水印、解析 markdown 等) +# 例如:注册名为 "the_content" 的钩子函数,在文章内容渲染前自动执行处理逻辑 +ARTICLE_CONTENT_HOOK_NAME = "the_content" \ No newline at end of file -- 2.34.1 From da1d0ec141f064075e94df92417bf557d0676b82 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 22:56:42 +0800 Subject: [PATCH 28/41] Update __init__.py --- src/DjangoBlog-master/djangoblog/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/DjangoBlog-master/djangoblog/__init__.py b/src/DjangoBlog-master/djangoblog/__init__.py index 1e205f4..0c523dd 100644 --- a/src/DjangoBlog-master/djangoblog/__init__.py +++ b/src/DjangoBlog-master/djangoblog/__init__.py @@ -1 +1,3 @@ +# Django 应用的默认配置指定 +# 作用:告诉 Django 当该应用被加载时,应使用哪个配置类进行初始化 default_app_config = 'djangoblog.apps.DjangoblogAppConfig' -- 2.34.1 From a9a7bf2f0a476ab8161a21b2814d1b1945da54d5 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:02:01 +0800 Subject: [PATCH 29/41] Update admin_site.py --- .../djangoblog/admin_site.py | 76 +++++++++++++------ 1 file changed, 51 insertions(+), 25 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/admin_site.py b/src/DjangoBlog-master/djangoblog/admin_site.py index f120405..5705829 100644 --- a/src/DjangoBlog-master/djangoblog/admin_site.py +++ b/src/DjangoBlog-master/djangoblog/admin_site.py @@ -1,64 +1,90 @@ +# 导入 Django 内置的 AdminSite 基础类(后台管理站点核心类) from django.contrib.admin import AdminSite +# 导入日志记录模型(用于记录后台操作日志) from django.contrib.admin.models import LogEntry +# 导入站点管理相关的默认 admin 类和模型(Django 内置的站点管理功能) from django.contrib.sites.admin import SiteAdmin from django.contrib.sites.models import Site -from accounts.admin import * -from blog.admin import * -from blog.models import * -from comments.admin import * -from comments.models import * +# 导入各应用自定义的 admin 配置和模型(将各模块的后台管理逻辑聚合到此处) +from accounts.admin import * # 用户账户相关的 admin 配置 +from blog.admin import * # 博客核心(文章、分类等)的 admin 配置 +from blog.models import * # 博客核心模型 +from comments.admin import * # 评论相关的 admin 配置 +from comments.models import *# 评论模型 +# 导入自定义的日志条目 admin 配置(扩展日志展示功能) from djangoblog.logentryadmin import LogEntryAdmin -from oauth.admin import * -from oauth.models import * -from owntracks.admin import * -from owntracks.models import * -from servermanager.admin import * -from servermanager.models import * +from oauth.admin import * # 第三方登录(OAuth)相关的 admin 配置 +from oauth.models import * # OAuth 相关模型 +from owntracks.admin import *# 位置追踪(OwnTracks)相关的 admin 配置 +from owntracks.models import *# 位置追踪模型 +from servermanager.admin import *# 服务器管理相关的 admin 配置 +from servermanager.models import *# 服务器管理模型 +# 自定义后台管理站点类(继承自 Django 内置的 AdminSite) class DjangoBlogAdminSite(AdminSite): + # 后台站点头部显示的标题(登录后顶部导航栏的文字) site_header = 'djangoblog administration' + # 浏览器标签页显示的标题(页面标题) site_title = 'djangoblog site admin' + # 初始化方法(调用父类构造方法,确保基础功能正常) def __init__(self, name='admin'): super().__init__(name) + # 权限控制方法:判断用户是否有权限访问后台 def has_permission(self, request): + # 仅允许超级用户(is_superuser=True)访问后台 return request.user.is_superuser + # 以下为注释掉的自定义 URL 示例(可扩展后台功能) # def get_urls(self): + # # 先获取父类默认的 URL 配置 # urls = super().get_urls() # from django.urls import path + # # 导入自定义视图(例如刷新缓存的视图) # from blog.views import refresh_memcache # + # # 定义自定义 URL 规则(如添加一个 /admin/refresh/ 路径) # my_urls = [ # path('refresh/', self.admin_view(refresh_memcache), name="refresh"), # ] + # # 合并默认 URL 和自定义 URL(自定义 URL 优先级更高) # return urls + my_urls +# 实例化自定义的后台管理站点(名称为 'admin',与默认后台路径保持一致) admin_site = DjangoBlogAdminSite(name='admin') -admin_site.register(Article, ArticlelAdmin) -admin_site.register(Category, CategoryAdmin) -admin_site.register(Tag, TagAdmin) -admin_site.register(Links, LinksAdmin) -admin_site.register(SideBar, SideBarAdmin) -admin_site.register(BlogSettings, BlogSettingsAdmin) +# 注册模型与对应的 admin 配置到自定义后台站点(实现各模型在后台的管理界面) +# 博客核心模型注册 +admin_site.register(Article, ArticlelAdmin) # 文章模型 + 其admin配置 +admin_site.register(Category, CategoryAdmin) # 分类模型 + 其admin配置 +admin_site.register(Tag, TagAdmin) # 标签模型 + 其admin配置 +admin_site.register(Links, LinksAdmin) # 友情链接模型 + 其admin配置 +admin_site.register(SideBar, SideBarAdmin) # 侧边栏模型 + 其admin配置 +admin_site.register(BlogSettings, BlogSettingsAdmin) # 博客设置模型 + 其admin配置 -admin_site.register(commands, CommandsAdmin) -admin_site.register(EmailSendLog, EmailSendLogAdmin) +# 服务器管理模型注册 +admin_site.register(commands, CommandsAdmin) # 命令模型 + 其admin配置 +admin_site.register(EmailSendLog, EmailSendLogAdmin) # 邮件发送日志 + 其admin配置 -admin_site.register(BlogUser, BlogUserAdmin) +# 用户模型注册 +admin_site.register(BlogUser, BlogUserAdmin) # 自定义用户模型 + 其admin配置 -admin_site.register(Comment, CommentAdmin) +# 评论模型注册 +admin_site.register(Comment, CommentAdmin) # 评论模型 + 其admin配置 -admin_site.register(OAuthUser, OAuthUserAdmin) -admin_site.register(OAuthConfig, OAuthConfigAdmin) +# OAuth 相关模型注册 +admin_site.register(OAuthUser, OAuthUserAdmin) # OAuth用户模型 + 其admin配置 +admin_site.register(OAuthConfig, OAuthConfigAdmin) # OAuth配置 + 其admin配置 -admin_site.register(OwnTrackLog, OwnTrackLogsAdmin) +# 位置追踪模型注册 +admin_site.register(OwnTrackLog, OwnTrackLogsAdmin) # 位置日志 + 其admin配置 +# Django 内置站点模型注册(使用默认的 SiteAdmin 配置) admin_site.register(Site, SiteAdmin) -admin_site.register(LogEntry, LogEntryAdmin) +# 后台操作日志模型注册(使用自定义的 LogEntryAdmin 配置,增强日志展示) +admin_site.register(LogEntry, LogEntryAdmin) \ No newline at end of file -- 2.34.1 From dd1d9aed714958e306c1901954ac3a8d758bf2a6 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:08:54 +0800 Subject: [PATCH 30/41] Update apps.py --- src/DjangoBlog-master/djangoblog/apps.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/apps.py b/src/DjangoBlog-master/djangoblog/apps.py index d29e318..3dc5603 100644 --- a/src/DjangoBlog-master/djangoblog/apps.py +++ b/src/DjangoBlog-master/djangoblog/apps.py @@ -1,11 +1,20 @@ +# 导入 Django 的应用配置基类(所有应用配置类需继承此类) from django.apps import AppConfig +# 自定义应用配置类(用于 djangoblog 应用的初始化设置) class DjangoblogAppConfig(AppConfig): + # 定义模型主键的默认类型:使用 BigAutoField(自增 BigInteger 类型) + # 替代旧版的 AutoField(自增 Integer),支持更大范围的主键值 default_auto_field = 'django.db.models.BigAutoField' + # 应用的名称(必须与项目中 INSTALLED_APPS 配置的名称一致) name = 'djangoblog' + # 应用就绪方法:当 Django 加载完所有应用后自动调用(用于初始化操作) def ready(self): + # 调用父类的 ready 方法,确保基础初始化逻辑执行 super().ready() - # Import and load plugins here + # 导入并加载插件(应用启动时加载所有注册的插件) + # 注意:避免在模块顶部导入,防止 Django 初始化时循环导入问题 from .plugin_manage.loader import load_plugins - load_plugins() \ No newline at end of file + # 执行插件加载函数(例如注册钩子、初始化插件功能等) + load_plugins() \ No newline at end of file -- 2.34.1 From 2d5359b2c794d5a2b683952fba69ebd4c9bc16c6 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:11:12 +0800 Subject: [PATCH 31/41] Update blog_signals.py --- .../djangoblog/blog_signals.py | 76 +++++++++++++++---- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/blog_signals.py b/src/DjangoBlog-master/djangoblog/blog_signals.py index 393f441..ffc3b89 100644 --- a/src/DjangoBlog-master/djangoblog/blog_signals.py +++ b/src/DjangoBlog-master/djangoblog/blog_signals.py @@ -1,7 +1,11 @@ +# 导入线程模块:用于异步执行耗时操作(如发送邮件,避免阻塞主流程) import _thread +# 导入日志模块:记录操作日志和错误信息 import logging +# 导入 Django 信号核心类:用于定义和处理自定义信号 import django.dispatch +# 导入 Django 配置、模型、工具类:支撑信号处理中的业务逻辑 from django.conf import settings from django.contrib.admin.models import LogEntry from django.contrib.auth.signals import user_logged_in, user_logged_out @@ -9,6 +13,7 @@ from django.core.mail import EmailMultiAlternatives from django.db.models.signals import post_save from django.dispatch import receiver +# 导入项目自定义模型和工具函数:适配博客业务场景 from comments.models import Comment from comments.utils import send_comment_email from djangoblog.spider_notify import SpiderNotify @@ -16,54 +21,73 @@ from djangoblog.utils import cache, expire_view_cache, delete_sidebar_cache, del from djangoblog.utils import get_current_site from oauth.models import OAuthUser +# 初始化日志对象:用于记录当前模块的日志(如邮件发送失败、爬虫通知错误) logger = logging.getLogger(__name__) +# 定义自定义信号:第三方登录(OAuth)成功后触发的信号,携带用户ID参数 oauth_user_login_signal = django.dispatch.Signal(['id']) +# 定义自定义信号:发送邮件的信号,携带收件人、标题、内容参数 send_email_signal = django.dispatch.Signal( ['emailto', 'title', 'content']) +# 信号接收器:监听 send_email_signal 信号,触发邮件发送逻辑 @receiver(send_email_signal) def send_email_signal_handler(sender, **kwargs): - emailto = kwargs['emailto'] - title = kwargs['title'] - content = kwargs['content'] + # 从信号参数中提取邮件相关信息 + emailto = kwargs['emailto'] # 收件人列表 + title = kwargs['title'] # 邮件标题 + content = kwargs['content'] # 邮件内容(HTML格式) + # 构建 HTML 格式邮件:支持富文本内容 msg = EmailMultiAlternatives( title, content, - from_email=settings.DEFAULT_FROM_EMAIL, + from_email=settings.DEFAULT_FROM_EMAIL, # 发件人(从项目配置中获取) to=emailto) - msg.content_subtype = "html" + msg.content_subtype = "html" # 声明邮件内容为 HTML 类型 + # 记录邮件发送日志到数据库 from servermanager.models import EmailSendLog log = EmailSendLog() log.title = title log.content = content - log.emailto = ','.join(emailto) + log.emailto = ','.join(emailto) # 收件人列表转字符串存储 try: + # 发送邮件:返回成功发送的邮件数量 result = msg.send() - log.send_result = result > 0 + log.send_result = result > 0 # 发送成功标记(数量>0即为成功) except Exception as e: + # 捕获发送异常,记录错误日志 logger.error(f"失败邮箱号: {emailto}, {e}") - log.send_result = False - log.save() + log.send_result = False # 标记发送失败 + finally: + # 保存日志记录到数据库 + log.save() +# 信号接收器:监听 oauth_user_login_signal 信号,处理 OAuth 登录后的逻辑 @receiver(oauth_user_login_signal) def oauth_user_login_signal_handler(sender, **kwargs): + # 从信号参数中提取 OAuth 用户ID id = kwargs['id'] + # 获取对应的 OAuth 用户对象 oauthuser = OAuthUser.objects.get(id=id) + # 获取当前站点域名(用于判断头像是否为本站地址) site = get_current_site().domain + + # 若用户头像不是本站地址(如第三方平台的远程图片),则下载并保存到本地 if oauthuser.picture and not oauthuser.picture.find(site) >= 0: from djangoblog.utils import save_user_avatar - oauthuser.picture = save_user_avatar(oauthuser.picture) - oauthuser.save() + oauthuser.picture = save_user_avatar(oauthuser.picture) # 下载并更新头像路径 + oauthuser.save() # 保存更新后的用户信息 + # 删除侧边栏缓存:用户登录状态变化可能影响侧边栏内容(如显示登录用户信息) delete_sidebar_cache() +# 信号接收器:监听所有模型的 post_save 信号(模型保存后触发) @receiver(post_save) def model_post_save_callback( sender, @@ -73,50 +97,74 @@ def model_post_save_callback( using, update_fields, **kwargs): + # 标记是否需要清理缓存 clearcache = False + + # 跳过 Admin 操作日志(LogEntry)的处理:避免日志保存时触发不必要的逻辑 if isinstance(instance, LogEntry): return + + # 处理有 "get_full_url" 方法的模型(如 Article 文章模型) if 'get_full_url' in dir(instance): + # 判断是否仅更新了 "views" 字段(文章阅读量) is_update_views = update_fields == {'views'} + # 非测试环境且非阅读量更新:通知搜索引擎(如百度)收录新页面 if not settings.TESTING and not is_update_views: try: - notify_url = instance.get_full_url() - SpiderNotify.baidu_notify([notify_url]) + notify_url = instance.get_full_url() # 获取模型的完整访问链接 + SpiderNotify.baidu_notify([notify_url]) # 调用百度爬虫通知接口 except Exception as ex: + # 捕获通知异常,记录错误日志 logger.error("notify sipder", ex) + # 非阅读量更新:标记需要清理缓存(如文章内容、标题修改) if not is_update_views: clearcache = True + # 处理 Comment 评论模型的保存逻辑 if isinstance(instance, Comment): + # 仅处理已启用的评论(is_enable=True) if instance.is_enable: + # 获取评论所属文章的访问路径 path = instance.article.get_absolute_url() + # 获取当前站点域名(处理端口号,仅保留域名部分) site = get_current_site().domain if site.find(':') > 0: site = site[0:site.find(':')] + # 清理文章详情页的视图缓存:避免显示旧评论 expire_view_cache( path, servername=site, serverport=80, key_prefix='blogdetail') + # 清理 SEO 处理器缓存:评论变化可能影响页面 SEO 信息 if cache.get('seo_processor'): cache.delete('seo_processor') + # 清理该文章的评论列表缓存 comment_cache_key = 'article_comments_{id}'.format( id=instance.article.id) cache.delete(comment_cache_key) + # 清理侧边栏缓存:侧边栏可能显示最新评论 delete_sidebar_cache() + # 清理评论分页视图的缓存 delete_view_cache('article_comments', [str(instance.article.pk)]) + # 异步发送评论通知邮件:用线程避免阻塞评论保存流程 _thread.start_new_thread(send_comment_email, (instance,)) + # 若标记需要清理缓存,则清空全局缓存(确保最新数据生效) if clearcache: cache.clear() +# 信号接收器:同时监听用户登录(user_logged_in)和登出(user_logged_out)信号 @receiver(user_logged_in) @receiver(user_logged_out) def user_auth_callback(sender, request, user, **kwargs): + # 若用户存在且用户名有效(排除异常情况) if user and user.username: + # 记录用户登录/登出日志 logger.info(user) + # 清理侧边栏缓存:登录状态变化可能影响侧边栏(如显示/隐藏用户菜单) delete_sidebar_cache() - # cache.clear() + # cache.clear() # 注释:若需全局清缓存可启用,当前仅清理侧边栏缓存 \ No newline at end of file -- 2.34.1 From f526a8d64a09288d6a30956a32434e9b581c609d Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:14:45 +0800 Subject: [PATCH 32/41] Update elasticsearch_backend.py --- .../djangoblog/elasticsearch_backend.py | 151 +++++++++++------- 1 file changed, 96 insertions(+), 55 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py b/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py index 4afe498..ba49e48 100644 --- a/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py +++ b/src/DjangoBlog-master/djangoblog/elasticsearch_backend.py @@ -1,150 +1,184 @@ +# 导入 Django 字符串处理工具:确保字符串编码兼容 from django.utils.encoding import force_str +# 导入 Elasticsearch DSL 工具:构建 Elasticsearch 查询语句 from elasticsearch_dsl import Q +# 导入 Haystack 核心类:实现自定义搜索后端、查询和引擎 from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, log_query -from haystack.forms import ModelSearchForm -from haystack.models import SearchResult -from haystack.utils import log as logging +from haystack.forms import ModelSearchForm # Haystack 基础搜索表单 +from haystack.models import SearchResult # Haystack 搜索结果封装类 +from haystack.utils import log as logging # Haystack 日志工具 +# 导入项目自定义的 Elasticsearch 文档和管理器:关联博客文章模型 from blog.documents import ArticleDocument, ArticleDocumentManager -from blog.models import Article +from blog.models import Article # 博客核心文章模型 +# 初始化日志对象:记录搜索相关日志(如查询语句、错误信息) logger = logging.getLogger(__name__) +# 自定义 Elasticsearch 搜索后端:实现 Haystack 与 Elasticsearch 的底层交互 class ElasticSearchBackend(BaseSearchBackend): def __init__(self, connection_alias, **connection_options): + # 调用父类构造方法,初始化 Haystack 基础搜索后端 super( ElasticSearchBackend, self).__init__( connection_alias, **connection_options) + # 初始化文章文档管理器:负责 Elasticsearch 索引的创建、更新、删除 self.manager = ArticleDocumentManager() + # 启用拼写建议功能:用于返回搜索关键词的推荐词 self.include_spelling = True + # 辅助方法:将模型实例转换为 Elasticsearch 文档(Document) def _get_models(self, iterable): + # 若传入空列表,默认获取所有文章;否则使用传入的模型实例 models = iterable if iterable and iterable[0] else Article.objects.all() + # 通过文档管理器将模型转换为 Elasticsearch 可识别的文档 docs = self.manager.convert_to_doc(models) return docs + # 初始化索引:创建 Elasticsearch 索引并批量添加文档 def _create(self, models): - self.manager.create_index() - docs = self._get_models(models) - self.manager.rebuild(docs) + self.manager.create_index() # 创建 Elasticsearch 索引结构 + docs = self._get_models(models) # 转换模型为文档 + self.manager.rebuild(docs) # 批量写入文档到索引 + # 删除索引中的文档:根据模型实例删除对应 Elasticsearch 记录 def _delete(self, models): for m in models: - m.delete() + m.delete() # 调用文档的 delete 方法,删除 Elasticsearch 中的对应记录 return True + # 重建索引:全量更新 Elasticsearch 中的文档(覆盖旧数据) def _rebuild(self, models): + # 若未指定模型,默认获取所有文章 models = models if models else Article.objects.all() - docs = self.manager.convert_to_doc(models) - self.manager.update_docs(docs) + docs = self._get_models(models) # 转换模型为文档 + self.manager.update_docs(docs) # 批量更新文档到索引 + # Haystack 标准方法:增量更新索引(更新指定模型对应的文档) def update(self, index, iterable, commit=True): + models = self._get_models(iterable) # 转换模型为文档 + self.manager.update_docs(models) # 增量更新文档 - models = self._get_models(iterable) - self.manager.update_docs(models) - + # Haystack 标准方法:移除单个模型对应的索引记录 def remove(self, obj_or_string): - models = self._get_models([obj_or_string]) - self._delete(models) + models = self._get_models([obj_or_string]) # 转换为文档 + self._delete(models) # 删除文档 + # Haystack 标准方法:清空索引(删除所有相关记录) def clear(self, models=None, commit=True): - self.remove(None) + self.remove(None) # 调用 remove 方法清空索引 @staticmethod def get_suggestion(query: str) -> str: - """获取推荐词, 如果没有找到添加原搜索词""" - + """ + 生成搜索关键词的推荐词(基于 Elasticsearch 拼写建议功能) + 若未找到推荐词,返回原查询词 + """ + # 构建 Elasticsearch 查询:匹配文章内容,并启用拼写建议 search = ArticleDocument.search() \ .query("match", body=query) \ .suggest('suggest_search', query, term={'field': 'body'}) \ - .execute() + .execute() # 执行查询 keywords = [] + # 提取 Elasticsearch 返回的建议词 for suggest in search.suggest.suggest_search: - if suggest["options"]: + if suggest["options"]: # 若有推荐词,取第一个 keywords.append(suggest["options"][0]["text"]) - else: + else: # 若无推荐词,保留原查询词 keywords.append(suggest["text"]) - return ' '.join(keywords) + return ' '.join(keywords) # 拼接推荐词为字符串返回 + # Haystack 核心搜索方法:执行搜索并返回结果(带日志记录装饰器) @log_query def search(self, query_string, **kwargs): - logger.info('search query_string:' + query_string) + logger.info('search query_string:' + query_string) # 记录查询关键词 - start_offset = kwargs.get('start_offset') - end_offset = kwargs.get('end_offset') + # 获取分页参数:起始偏移量和结束偏移量(用于分页) + start_offset = kwargs.get('start_offset', 0) + end_offset = kwargs.get('end_offset') # 若为 None,Elasticsearch 会返回默认数量结果 - # 推荐词搜索 + # 生成推荐词:根据 is_suggest 标识判断是否需要拼写建议 if getattr(self, "is_suggest", None): suggestion = self.get_suggestion(query_string) else: - suggestion = query_string + suggestion = query_string # 不需要建议则使用原查询词 + # 构建 Elasticsearch 查询条件(布尔查询) + # 1. 匹配条件:标题或内容包含推荐词,匹配度最低 70% q = Q('bool', should=[Q('match', body=suggestion), Q('match', title=suggestion)], minimum_should_match="70%") + # 构建完整搜索请求: + # - 过滤条件:使用上面的 q 匹配结果,且文章状态为“已发布”(status='p')、类型为“文章”(type='a') + # - 不返回文档源数据(source=False):仅获取 ID 和得分,减少数据传输 + # - 分页:按 start_offset 和 end_offset 截取结果 search = ArticleDocument.search() \ .query('bool', filter=[q]) \ .filter('term', status='p') \ .filter('term', type='a') \ .source(False)[start_offset: end_offset] + # 执行搜索,获取 Elasticsearch 返回结果 results = search.execute() - hits = results['hits'].total - raw_results = [] + hits = results['hits'].total # 匹配到的总结果数 + raw_results = [] # 存储 Haystack 标准格式的搜索结果 + + # 解析 Elasticsearch 原始结果,封装为 Haystack 的 SearchResult 格式 for raw_result in results['hits']['hits']: - app_label = 'blog' - model_name = 'Article' - additional_fields = {} + app_label = 'blog' # 模型所属应用 + model_name = 'Article' # 模型名称 + additional_fields = {} # 额外字段(此处无额外信息,留空) + # 实例化 SearchResult:封装应用名、模型名、文档ID、匹配得分等信息 result_class = SearchResult - result = result_class( app_label, model_name, - raw_result['_id'], - raw_result['_score'], + raw_result['_id'], # Elasticsearch 中文档的 ID + raw_result['_score'], # 匹配得分(用于排序) **additional_fields) raw_results.append(result) + + # 搜索结果元数据:分面(无分面需求,留空)、拼写建议 facets = {} + # 若推荐词与原查询词不同,返回推荐词;否则为 None spelling_suggestion = None if query_string == suggestion else suggestion + # 返回 Haystack 标准格式的搜索结果 return { - 'results': raw_results, - 'hits': hits, - 'facets': facets, - 'spelling_suggestion': spelling_suggestion, + 'results': raw_results, # 封装后的搜索结果列表 + 'hits': hits, # 总匹配数 + 'facets': facets, # 分面数据(空) + 'spelling_suggestion': spelling_suggestion, # 拼写建议 } +# 自定义 Elasticsearch 查询类:处理查询参数解析、格式清洗等 class ElasticSearchQuery(BaseSearchQuery): + # 转换日期格式:适配 Elasticsearch 的日期查询需求 def _convert_datetime(self, date): - if hasattr(date, 'hour'): + if hasattr(date, 'hour'): # 若为datetime(含时分秒),格式化为年月日时分秒 return force_str(date.strftime('%Y%m%d%H%M%S')) - else: + else: # 若为date(仅年月日),补全时分秒为000000 return force_str(date.strftime('%Y%m%d000000')) + # 清洗查询词:处理 Haystack 保留词和特殊字符,避免查询语法错误 def clean(self, query_fragment): - """ - Provides a mechanism for sanitizing user input before presenting the - value to the backend. - - Whoosh 1.X differs here in that you can no longer use a backslash - to escape reserved characters. Instead, the whole word should be - quoted. - """ - words = query_fragment.split() + words = query_fragment.split() # 拆分查询词为单词列表 cleaned_words = [] for word in words: + # 处理 Haystack 保留词(如 AND、OR),转为小写(避免语法冲突) if word in self.backend.RESERVED_WORDS: word = word.replace(word, word.lower()) + # 处理特殊字符(如 +、-、*):包含特殊字符的单词用引号包裹 for char in self.backend.RESERVED_CHARACTERS: if char in word: word = "'%s'" % word @@ -152,32 +186,39 @@ class ElasticSearchQuery(BaseSearchQuery): cleaned_words.append(word) - return ' '.join(cleaned_words) + return ' '.join(cleaned_words) # 拼接清洗后的查询词 + # 构建查询片段:适配自定义查询逻辑(此处直接返回查询字符串) def build_query_fragment(self, field, filter_type, value): return value.query_string + # 获取搜索结果总数:通过 get_results 结果长度计算 def get_count(self): results = self.get_results() return len(results) if results else 0 + # 获取拼写建议:返回后端生成的推荐词 def get_spelling_suggestion(self, preferred_query=None): return self._spelling_suggestion + # 构建搜索参数:继承父类逻辑,可自定义扩展参数 def build_params(self, spelling_query=None): kwargs = super(ElasticSearchQuery, self).build_params(spelling_query=spelling_query) return kwargs +# 自定义搜索表单:扩展 Haystack 基础表单,支持“是否启用拼写建议”的控制 class ElasticSearchModelSearchForm(ModelSearchForm): - def search(self): - # 是否建议搜索 + # 根据请求参数(is_suggest)设置后端是否启用拼写建议 + # 若 is_suggest = "no",则不启用;否则启用 self.searchqueryset.query.backend.is_suggest = self.data.get("is_suggest") != "no" + # 调用父类 search 方法,执行搜索并返回结果 sqs = super().search() return sqs +# 自定义 Elasticsearch 搜索引擎:关联后端和查询类,供 Haystack 调用 class ElasticSearchEngine(BaseEngine): - backend = ElasticSearchBackend - query = ElasticSearchQuery + backend = ElasticSearchBackend # 绑定自定义搜索后端 + query = ElasticSearchQuery # 绑定自定义查询类 \ No newline at end of file -- 2.34.1 From 0d0fb564d6860fb760dbbfa25c1a581e8ecf828d Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:18:15 +0800 Subject: [PATCH 33/41] Update feeds.py --- src/DjangoBlog-master/djangoblog/feeds.py | 31 +++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/feeds.py b/src/DjangoBlog-master/djangoblog/feeds.py index 8c4e851..d8e09ae 100644 --- a/src/DjangoBlog-master/djangoblog/feeds.py +++ b/src/DjangoBlog-master/djangoblog/feeds.py @@ -1,40 +1,61 @@ +# 导入 Django 用户模型工具:获取当前项目的用户模型(支持自定义用户模型) from django.contrib.auth import get_user_model +# 导入 Django 内置的 Feed 基类:用于快速实现 RSS/Atom 订阅功能 from django.contrib.syndication.views import Feed +# 导入 Django 时间工具:处理时区和当前时间 from django.utils import timezone +# 导入 RSS 2.0 格式生成器:指定 Feed 输出格式为 RSS 2.0 标准 from django.utils.feedgenerator import Rss201rev2Feed +# 导入博客核心模型和工具:关联文章数据及 Markdown 解析 from blog.models import Article -from djangoblog.utils import CommonMarkdown +from djangoblog.utils import CommonMarkdown # 自定义 Markdown 解析工具(将文章内容转为 HTML) +# 自定义 RSS Feed 类:继承 Django 内置 Feed 类,实现博客文章的订阅功能 class DjangoBlogFeed(Feed): + # 指定 Feed 生成器类型:使用 RSS 2.0 标准格式(最常用的 RSS 版本) feed_type = Rss201rev2Feed + # Feed 描述信息:显示在订阅源的说明中 description = '大巧无工,重剑无锋.' + # Feed 标题:订阅源的名称(通常为博客名称) title = "且听风吟 大巧无工,重剑无锋. " + # Feed 的链接:订阅源自身的 URL(通常指向博客首页或 Feed 专属页面) link = "/feed/" + # 订阅源作者名称:从系统第一个用户的昵称获取(适合个人博客) def author_name(self): return get_user_model().objects.first().nickname + # 订阅源作者链接:指向作者的个人页面(通过用户模型的 get_absolute_url 方法获取) def author_link(self): return get_user_model().objects.first().get_absolute_url() + # 订阅源包含的项目(文章):定义要展示在 Feed 中的内容 def items(self): + # 筛选条件:类型为文章(type='a')、状态为已发布(status='p') + # 排序规则:按发布时间倒序(最新发布的文章在前) + # 数量限制:只显示最新的 5 篇文章 return Article.objects.filter(type='a', status='p').order_by('-pub_time')[:5] + # 单个项目(文章)的标题:使用文章自身的标题 def item_title(self, item): return item.title + # 单个项目(文章)的描述:将 Markdown 格式的文章内容转为 HTML 后展示 def item_description(self, item): - return CommonMarkdown.get_markdown(item.body) + return CommonMarkdown.get_markdown(item.body) # 调用工具类解析 Markdown + # 订阅源的版权信息:动态生成包含当前年份的版权声明 def feed_copyright(self): - now = timezone.now() - return "Copyright© {year} 且听风吟".format(year=now.year) + now = timezone.now() # 获取当前时间(带时区) + return "Copyright© {year} 且听风吟".format(year=now.year) # 格式化版权信息 + # 单个项目(文章)的链接:指向文章详情页(通过文章模型的 get_absolute_url 方法获取) def item_link(self, item): return item.get_absolute_url() + # 单个项目(文章)的唯一标识(GUID):此处留空,Django 会默认使用 item_link 作为 GUID def item_guid(self, item): - return + return \ No newline at end of file -- 2.34.1 From 9e31e3db5ee3538e615425bb45e4c40c99c69254 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:21:41 +0800 Subject: [PATCH 34/41] Update logentryadmin.py --- .../djangoblog/logentryadmin.py | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/logentryadmin.py b/src/DjangoBlog-master/djangoblog/logentryadmin.py index 2f6a535..ac3f7cb 100644 --- a/src/DjangoBlog-master/djangoblog/logentryadmin.py +++ b/src/DjangoBlog-master/djangoblog/logentryadmin.py @@ -1,27 +1,37 @@ +# 导入 Django Admin 核心模块:用于自定义后台管理界面 from django.contrib import admin +# 导入 Admin 日志相关常量和模型:处理日志操作类型(如删除) from django.contrib.admin.models import DELETION from django.contrib.contenttypes.models import ContentType +# 导入 Django URL 和字符串处理工具:生成反向链接、处理编码和转义 from django.urls import reverse, NoReverseMatch from django.utils.encoding import force_str from django.utils.html import escape from django.utils.safestring import mark_safe +# 导入国际化工具:支持后台文字的多语言翻译 from django.utils.translation import gettext_lazy as _ +# 自定义 LogEntry Admin 类:用于在 Django 后台管理 Admin 操作日志(记录用户对模型的增删改操作) class LogEntryAdmin(admin.ModelAdmin): + # 列表页筛选器:按“内容类型”(即操作的模型,如 Article、Comment)筛选日志 list_filter = [ 'content_type' ] + # 列表页搜索框:支持按“对象名称”(如文章标题)和“操作描述”(如“修改了标题”)搜索 search_fields = [ 'object_repr', 'change_message' ] + # 列表页可点击的链接:点击“操作时间”或“操作描述”可进入日志详情页 list_display_links = [ 'action_time', 'get_change_message', ] + + # 列表页展示的字段:操作时间、操作用户(带链接)、操作模型、操作对象(带链接)、操作描述 list_display = [ 'action_time', 'user_link', @@ -30,62 +40,81 @@ class LogEntryAdmin(admin.ModelAdmin): 'get_change_message', ] + # 权限控制:禁止添加日志(日志由系统自动生成,不允许手动添加) def has_add_permission(self, request): return False + # 权限控制:仅允许超级用户或拥有“修改日志”权限的用户查看/修改日志,且禁止 POST 请求(避免提交修改) def has_change_permission(self, request, obj=None): return ( request.user.is_superuser or request.user.has_perm('admin.change_logentry') ) and request.method != 'POST' + # 权限控制:禁止删除日志(日志需留存,不允许手动删除) def has_delete_permission(self, request, obj=None): return False + # 自定义列表字段:操作对象(生成带链接的对象名称,点击可跳转到对象的编辑页) def object_link(self, obj): + # 转义对象名称(避免 XSS 攻击) object_link = escape(obj.object_repr) + # 获取操作对象的内容类型(即所属模型) content_type = obj.content_type + # 若操作不是“删除”(DELETION)且内容类型存在(排除异常情况) if obj.action_flag != DELETION and content_type is not None: - # try returning an actual link instead of object repr string try: + # 生成对象编辑页的 URL(格式:admin/应用名/模型名/change/对象ID/) url = reverse( 'admin:{}_{}_change'.format(content_type.app_label, content_type.model), args=[obj.object_id] ) + # 将对象名称转为链接(点击跳转到编辑页) object_link = '{}'.format(url, object_link) except NoReverseMatch: + # 若无法生成链接(如模型未注册到 Admin),则保留纯文本名称 pass + # 标记为安全 HTML(告诉 Django 无需转义,避免链接被当作文本显示) return mark_safe(object_link) - object_link.admin_order_field = 'object_repr' - object_link.short_description = _('object') + # 配置自定义字段的排序和显示名称 + object_link.admin_order_field = 'object_repr' # 支持按“对象名称”排序 + object_link.short_description = _('object') # 列表页字段显示名称(支持翻译) + # 自定义列表字段:操作用户(生成带链接的用户名,点击可跳转到用户的编辑页) def user_link(self, obj): + # 获取用户模型的内容类型 content_type = ContentType.objects.get_for_model(type(obj.user)) + # 转义用户名(避免 XSS 攻击) user_link = escape(force_str(obj.user)) try: - # try returning an actual link instead of object repr string + # 生成用户编辑页的 URL url = reverse( 'admin:{}_{}_change'.format(content_type.app_label, content_type.model), args=[obj.user.pk] ) + # 将用户名转为链接(点击跳转到用户编辑页) user_link = '{}'.format(url, user_link) except NoReverseMatch: + # 若无法生成链接(如用户模型未注册到 Admin),则保留纯文本用户名 pass return mark_safe(user_link) - user_link.admin_order_field = 'user' - user_link.short_description = _('user') + # 配置自定义字段的排序和显示名称 + user_link.admin_order_field = 'user' # 支持按“用户”排序 + user_link.short_description = _('user') # 列表页字段显示名称(支持翻译) + # 优化查询性能:预加载“内容类型”关联数据(避免列表页加载时产生大量数据库查询) def get_queryset(self, request): queryset = super(LogEntryAdmin, self).get_queryset(request) return queryset.prefetch_related('content_type') + # 自定义批量操作:移除“批量删除”按钮(防止误删日志) def get_actions(self, request): actions = super(LogEntryAdmin, self).get_actions(request) if 'delete_selected' in actions: - del actions['delete_selected'] - return actions + del actions['delete_selected'] # 删除“批量删除”操作 + return actions \ No newline at end of file -- 2.34.1 From bc5e04c973450fe630f49c5cd9eba34b24216186 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:25:02 +0800 Subject: [PATCH 35/41] Update settings.py --- src/DjangoBlog-master/djangoblog/settings.py | 360 ++++++++++--------- 1 file changed, 200 insertions(+), 160 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/settings.py b/src/DjangoBlog-master/djangoblog/settings.py index d076bb6..3a75c92 100644 --- a/src/DjangoBlog-master/djangoblog/settings.py +++ b/src/DjangoBlog-master/djangoblog/settings.py @@ -13,331 +13,371 @@ import os import sys from pathlib import Path +# 导入 Django 国际化工具:用于多语言文本翻译 from django.utils.translation import gettext_lazy as _ +# 自定义工具函数:将环境变量转为布尔值(处理配置的灵活性) def env_to_bool(env, default): - str_val = os.environ.get(env) + str_val = os.environ.get(env) # 从环境变量获取值 + # 若环境变量未设置则返回默认值,否则判断字符串是否为'True' return default if str_val is None else str_val == 'True' -# Build paths inside the project like this: BASE_DIR / 'subdir'. +# 项目根目录:定位到 settings.py 所在目录的父目录(项目根路径) BASE_DIR = Path(__file__).resolve().parent.parent # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ -# SECURITY WARNING: keep the secret key used in production secret! +# 安全密钥:用于加密会话、CSRF 令牌等敏感数据(生产环境需通过环境变量设置,避免硬编码) SECRET_KEY = os.environ.get( 'DJANGO_SECRET_KEY') or 'n9ceqv38)#&mwuat@(mjb_p%em$e8$qyr#fw9ot!=ba6lijx-6' -# SECURITY WARNING: don't run with debug turned on in production! +# 调试模式:开发环境开启(便于调试),生产环境必须关闭(避免暴露敏感信息) DEBUG = env_to_bool('DJANGO_DEBUG', True) -# DEBUG = False +# DEBUG = False # 生产环境手动关闭调试的示例 +# 测试模式标识:判断是否正在执行测试命令(如 python manage.py test) TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test' -# ALLOWED_HOSTS = [] +# 允许访问的主机:生产环境需指定具体域名,开发环境用'*'允许所有主机(存在安全风险,生产禁用) +# ALLOWED_HOSTS = [] # 生产环境初始空配置(需补充具体域名) ALLOWED_HOSTS = ['*', '127.0.0.1', 'example.com'] -# django 4.0新增配置 +# Django 4.0+ 新增配置:信任的 CSRF 来源(避免跨域 CSRF 验证失败,生产环境需指定真实域名) CSRF_TRUSTED_ORIGINS = ['http://example.com'] -# Application definition +# Application definition(已安装的应用:Django 内置应用 + 第三方应用 + 自定义应用) INSTALLED_APPS = [ - # 'django.contrib.admin', + # Django 内置 Admin 应用:使用精简版配置(SimpleAdminConfig),减少不必要功能 + # 'django.contrib.admin', # 完整版 Admin 配置(此处注释,使用精简版) 'django.contrib.admin.apps.SimpleAdminConfig', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.contrib.sites', - 'django.contrib.sitemaps', - 'mdeditor', - 'haystack', - 'blog', - 'accounts', - 'comments', - 'oauth', - 'servermanager', - 'owntracks', - 'compressor', - 'djangoblog' + 'django.contrib.auth', # 认证与授权系统 + 'django.contrib.contenttypes', # 内容类型框架(关联模型与权限) + 'django.contrib.sessions', # 会话管理(用户登录状态保持) + 'django.contrib.messages', # 消息提示系统(如登录成功提示) + 'django.contrib.staticfiles', # 静态文件管理(CSS/JS/图片) + 'django.contrib.sites', # 多站点支持(用于 RSS、OAuth 等功能) + 'django.contrib.sitemaps', # 站点地图生成(利于 SEO) + 'mdeditor', # 第三方应用:Markdown 编辑器(用于文章编写) + 'haystack', # 第三方应用:搜索框架(对接 Whoosh/Elasticsearch) + 'blog', # 自定义应用:博客核心功能(文章、分类等) + 'accounts', # 自定义应用:用户账户管理(登录、注册等) + 'comments', # 自定义应用:评论功能 + 'oauth', # 自定义应用:第三方登录(如 GitHub、微博) + 'servermanager', # 自定义应用:服务器管理(命令执行、日志记录) + 'owntracks', # 自定义应用:位置追踪(OwnTracks 数据管理) + 'compressor', # 第三方应用:静态文件压缩(CSS/JS 压缩,提升加载速度) + 'djangoblog' # 自定义应用:项目核心配置(如信号、插件) ] +# 中间件:处理请求/响应的钩子(按顺序执行,影响请求流程) MIDDLEWARE = [ - - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.locale.LocaleMiddleware', - 'django.middleware.gzip.GZipMiddleware', - # 'django.middleware.cache.UpdateCacheMiddleware', - 'django.middleware.common.CommonMiddleware', - # 'django.middleware.cache.FetchFromCacheMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'django.middleware.http.ConditionalGetMiddleware', - 'blog.middleware.OnlineMiddleware' + 'django.middleware.security.SecurityMiddleware', # 安全相关中间件(HTTPS、XSS 防护等) + 'django.contrib.sessions.middleware.SessionMiddleware', # 会话管理中间件 + 'django.middleware.locale.LocaleMiddleware', # 国际化中间件(处理多语言切换) + 'django.middleware.gzip.GZipMiddleware', # GZip 压缩中间件(减少响应体积) + # 'django.middleware.cache.UpdateCacheMiddleware', # 缓存更新中间件(注释:按需启用) + 'django.middleware.common.CommonMiddleware', # 通用中间件(处理 URL 重定向、404 等) + # 'django.middleware.cache.FetchFromCacheMiddleware', # 缓存读取中间件(注释:按需启用) + 'django.middleware.csrf.CsrfViewMiddleware', # CSRF 防护中间件(防止跨站请求伪造) + 'django.contrib.auth.middleware.AuthenticationMiddleware', # 认证中间件(绑定用户到请求) + 'django.contrib.messages.middleware.MessageMiddleware', # 消息中间件(传递提示信息) + 'django.middleware.clickjacking.XFrameOptionsMiddleware', # 点击劫持防护中间件 + 'django.middleware.http.ConditionalGetMiddleware', # 条件请求中间件(缓存协商,减少重复请求) + 'blog.middleware.OnlineMiddleware' # 自定义中间件:用户在线状态管理 ] +# 根 URL 配置:指定项目的主 URL 路由文件 ROOT_URLCONF = 'djangoblog.urls' +# 模板配置:定义模板引擎、路径及上下文处理器 TEMPLATES = [ { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')], - 'APP_DIRS': True, + 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 使用 Django 内置模板引擎 + 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 全局模板目录(项目根目录下的 templates) + 'APP_DIRS': True, # 允许从各应用的 templates 目录加载模板 'OPTIONS': { + # 上下文处理器:向所有模板注入全局变量(如用户信息、请求对象) 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - 'blog.context_processors.seo_processor' + 'django.template.context_processors.debug', # 调试模式变量(如 DEBUG) + 'django.template.context_processors.request', # 请求对象(request) + 'django.contrib.auth.context_processors.auth', # 认证相关变量(如 user) + 'django.contrib.messages.context_processors.messages', # 消息变量(如 messages) + 'blog.context_processors.seo_processor' # 自定义上下文处理器:注入 SEO 相关数据 ], }, }, ] +# WSGI 应用:指定项目的 WSGI 入口文件(用于部署,如 Gunicorn、uWSGI) WSGI_APPLICATION = 'djangoblog.wsgi.application' -# Database -# https://docs.djangoproject.com/en/1.10/ref/settings/#databases - +# Database(数据库配置:使用 MySQL 数据库) +# https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = { 'default': { - 'ENGINE': 'django.db.backends.mysql', - 'NAME': os.environ.get('DJANGO_MYSQL_DATABASE') or 'djangoblog', - 'USER': os.environ.get('DJANGO_MYSQL_USER') or 'root', - 'PASSWORD': os.environ.get('DJANGO_MYSQL_PASSWORD') or 'root', - 'HOST': os.environ.get('DJANGO_MYSQL_HOST') or '127.0.0.1', - 'PORT': int( - os.environ.get('DJANGO_MYSQL_PORT') or 3306), + 'ENGINE': 'django.db.backends.mysql', # 数据库引擎(MySQL) + 'NAME': os.environ.get('DJANGO_MYSQL_DATABASE') or 'djangoblog', # 数据库名(优先从环境变量获取) + 'USER': os.environ.get('DJANGO_MYSQL_USER') or 'root', # 数据库用户名 + 'PASSWORD': os.environ.get('DJANGO_MYSQL_PASSWORD') or 'root', # 数据库密码 + 'HOST': os.environ.get('DJANGO_MYSQL_HOST') or '127.0.0.1', # 数据库主机(默认本地) + 'PORT': int(os.environ.get('DJANGO_MYSQL_PORT') or 3306), # 数据库端口(默认 3306) 'OPTIONS': { - 'charset': 'utf8mb4'}, + 'charset': 'utf8mb4'}, # 数据库字符集(支持 emoji 表情) }} -# Password validation -# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators +# Password validation(密码验证规则:确保用户密码强度) +# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { + # 验证密码与用户属性(如用户名、邮箱)的相似度 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { + # 验证密码最小长度(默认 8 位) 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { + # 验证密码是否在常见弱密码列表中 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { + # 验证密码是否纯数字 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] + +# Internationalization(国际化配置:多语言支持) +# https://docs.djangoproject.com/en/1.10/topics/i18n/ LANGUAGES = ( - ('en', _('English')), - ('zh-hans', _('Simplified Chinese')), - ('zh-hant', _('Traditional Chinese')), + ('en', _('English')), # 英语 + ('zh-hans', _('Simplified Chinese')), # 简体中文 + ('zh-hant', _('Traditional Chinese')), # 繁体中文 ) +# 翻译文件目录:指定多语言翻译文件(.po/.mo)的存放路径 LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), ) -LANGUAGE_CODE = 'zh-hans' - -TIME_ZONE = 'Asia/Shanghai' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = False - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.10/howto/static-files/ +LANGUAGE_CODE = 'zh-hans' # 默认语言:简体中文 +TIME_ZONE = 'Asia/Shanghai' # 时区:上海(中国时区) +USE_I18N = True # 启用国际化(支持多语言) +USE_L10N = True # 启用本地化(支持区域化日期、数字格式) +USE_TZ = False # 禁用 UTC 时间(使用本地时区存储时间,避免时区转换问题) +# Search(搜索框架配置:Haystack + Whoosh/Elasticsearch) HAYSTACK_CONNECTIONS = { 'default': { + # 搜索引擎:默认使用 Whoosh(轻量级全文搜索引擎,适合中小项目) 'ENGINE': 'djangoblog.whoosh_cn_backend.WhooshEngine', + # 索引文件路径:Whoosh 索引文件存储位置 'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'), }, } -# Automatically update searching index +# 实时更新索引:当模型数据(如文章)新增/修改/删除时,自动更新搜索索引 HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' -# Allow user login with username and password -AUTHENTICATION_BACKENDS = [ - 'accounts.user_login_backend.EmailOrUsernameModelBackend'] -STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic') - -STATIC_URL = '/static/' -STATICFILES = os.path.join(BASE_DIR, 'static') +# Authentication(认证配置:自定义登录逻辑) +# 允许用户通过“用户名”或“邮箱”登录(默认仅支持用户名) +AUTHENTICATION_BACKENDS = [ + 'accounts.user_login_backend.EmailOrUsernameModelBackend'] +# 自定义用户模型:使用 accounts 应用的 BlogUser 模型(替代 Django 内置 User 模型) AUTH_USER_MODEL = 'accounts.BlogUser' +# 登录 URL:未登录用户访问需认证页面时,重定向到该 URL LOGIN_URL = '/login/' -TIME_FORMAT = '%Y-%m-%d %H:%M:%S' -DATE_TIME_FORMAT = '%Y-%m-%d' -# bootstrap color styles -BOOTSTRAP_COLOR_TYPES = [ +# Custom Settings(自定义业务配置) +TIME_FORMAT = '%Y-%m-%d %H:%M:%S' # 时间显示格式(如 2024-05-20 14:30:00) +DATE_TIME_FORMAT = '%Y-%m-%d' # 日期显示格式(如 2024-05-20) +BOOTSTRAP_COLOR_TYPES = [ # Bootstrap 颜色样式(用于前端组件,如标签、按钮) 'default', 'primary', 'success', 'info', 'warning', 'danger' ] +PAGINATE_BY = 10 # 分页大小:每页显示 10 条数据(如文章列表、评论列表) +CACHE_CONTROL_MAX_AGE = 2592000 # HTTP 缓存有效期:30 天(单位:秒) + -# paginate -PAGINATE_BY = 10 -# http cache timeout -CACHE_CONTROL_MAX_AGE = 2592000 -# cache setting +# Cache(缓存配置:默认本地内存缓存,支持 Redis 扩展) CACHES = { 'default': { + # 本地内存缓存(适合开发环境,生产环境建议用 Redis/Memcached) 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', - 'TIMEOUT': 10800, - 'LOCATION': 'unique-snowflake', + 'TIMEOUT': 10800, # 缓存有效期:3 小时(单位:秒) + 'LOCATION': 'unique-snowflake', # 缓存实例标识(避免多实例冲突) } } -# 使用redis作为缓存 +# 若环境变量指定 Redis 地址,则使用 Redis 作为缓存(生产环境推荐) if os.environ.get("DJANGO_REDIS_URL"): CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.redis.RedisCache', - 'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}', + 'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}', # Redis 连接地址 } } -SITE_ID = 1 + +# Site & SEO(站点与 SEO 配置) +SITE_ID = 1 # 站点 ID(多站点配置时区分不同站点,单站点固定为 1) +# 百度主动推送 URL:用于文章发布后主动通知百度收录(提升 SEO 效率) BAIDU_NOTIFY_URL = os.environ.get('DJANGO_BAIDU_NOTIFY_URL') \ or 'http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn' -# Email: -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -EMAIL_USE_TLS = env_to_bool('DJANGO_EMAIL_TLS', False) -EMAIL_USE_SSL = env_to_bool('DJANGO_EMAIL_SSL', True) -EMAIL_HOST = os.environ.get('DJANGO_EMAIL_HOST') or 'smtp.mxhichina.com' -EMAIL_PORT = int(os.environ.get('DJANGO_EMAIL_PORT') or 465) -EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') -EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') -DEFAULT_FROM_EMAIL = EMAIL_HOST_USER -SERVER_EMAIL = EMAIL_HOST_USER -# Setting debug=false did NOT handle except email notifications + +# Email(邮件配置:用于发送验证码、评论通知等) +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # SMTP 邮件后端 +EMAIL_USE_TLS = env_to_bool('DJANGO_EMAIL_TLS', False) # 是否启用 TLS 加密(与 SSL 二选一) +EMAIL_USE_SSL = env_to_bool('DJANGO_EMAIL_SSL', True) # 是否启用 SSL 加密(默认启用,端口通常为 465) +EMAIL_HOST = os.environ.get('DJANGO_EMAIL_HOST') or 'smtp.mxhichina.com' # SMTP 服务器地址(默认阿里云) +EMAIL_PORT = int(os.environ.get('DJANGO_EMAIL_PORT') or 465) # SMTP 端口(SSL 通常为 465,TLS 通常为 587) +EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') # 发送邮件的邮箱账号(优先环境变量) +EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') # 邮箱密码/授权码 +DEFAULT_FROM_EMAIL = EMAIL_HOST_USER # 默认发件人邮箱 +SERVER_EMAIL = EMAIL_HOST_USER # 服务器错误通知发件人邮箱 +# 管理员邮箱:生产环境错误(如 500 异常)会发送到此邮箱 ADMINS = [('admin', os.environ.get('DJANGO_ADMIN_EMAIL') or 'admin@admin.com')] -# WX ADMIN password(Two times md5) +# 微信管理员密码:二次 MD5 加密(用于微信后台管理验证,具体业务自定义) WXADMIN = os.environ.get( 'DJANGO_WXADMIN_PASSWORD') or '995F03AC401D6CABABAEF756FC4D43C7' -LOG_PATH = os.path.join(BASE_DIR, 'logs') + +# Logging(日志配置:记录系统操作、错误信息) +LOG_PATH = os.path.join(BASE_DIR, 'logs') # 日志文件目录 +# 若日志目录不存在,则创建(确保日志能正常写入) if not os.path.exists(LOG_PATH): os.makedirs(LOG_PATH, exist_ok=True) LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'root': { - 'level': 'INFO', - 'handlers': ['console', 'log_file'], + 'version': 1, # 日志配置版本(固定为 1) + 'disable_existing_loggers': False, # 不禁用已存在的日志器 + 'root': { # 根日志器(所有未指定日志器的日志都会走这里) + 'level': 'INFO', # 日志级别(INFO:记录普通信息及以上级别) + 'handlers': ['console', 'log_file'], # 日志处理器(控制台 + 文件) }, - 'formatters': { + 'formatters': { # 日志格式:定义日志的输出结构 'verbose': { + # 日志格式:时间 + 级别 + 调用位置 + 消息(便于问题定位) 'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d %(module)s] %(message)s', } }, - 'filters': { - 'require_debug_false': { + 'filters': { # 日志过滤器:按条件过滤日志 + 'require_debug_false': { # 仅当 DEBUG=False 时生效(生产环境) '()': 'django.utils.log.RequireDebugFalse', }, - 'require_debug_true': { + 'require_debug_true': { # 仅当 DEBUG=True 时生效(开发环境) '()': 'django.utils.log.RequireDebugTrue', }, }, - 'handlers': { - 'log_file': { + 'handlers': { # 日志处理器:定义日志的输出方式 + 'log_file': { # 文件处理器:按时间轮转切割日志 'level': 'INFO', - 'class': 'logging.handlers.TimedRotatingFileHandler', - 'filename': os.path.join(LOG_PATH, 'djangoblog.log'), - 'when': 'D', - 'formatter': 'verbose', - 'interval': 1, - 'delay': True, - 'backupCount': 5, - 'encoding': 'utf-8' + 'class': 'logging.handlers.TimedRotatingFileHandler', # 按时间轮转的处理器 + 'filename': os.path.join(LOG_PATH, 'djangoblog.log'), # 日志文件路径 + 'when': 'D', # 轮转周期:每天(Day) + 'formatter': 'verbose', # 使用 verbose 格式 + 'interval': 1, # 轮转间隔:1 个周期(1 天) + 'delay': True, # 延迟创建文件(直到有日志才创建) + 'backupCount': 5, # 保留日志备份数:5 天 + 'encoding': 'utf-8' # 日志文件编码 }, - 'console': { + 'console': { # 控制台处理器:开发环境输出到终端 'level': 'DEBUG', - 'filters': ['require_debug_true'], + 'filters': ['require_debug_true'], # 仅开发环境生效 'class': 'logging.StreamHandler', 'formatter': 'verbose' }, - 'null': { + 'null': { # 空处理器:用于屏蔽不需要的日志 'class': 'logging.NullHandler', }, - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], + 'mail_admins': { # 邮件处理器:生产环境错误发送到管理员邮箱 + 'level': 'ERROR', # 仅 ERROR 级别日志触发 + 'filters': ['require_debug_false'], # 仅生产环境生效 'class': 'django.utils.log.AdminEmailHandler' } }, - 'loggers': { - 'djangoblog': { - 'handlers': ['log_file', 'console'], + 'loggers': { # 自定义日志器:针对特定模块配置日志 + 'djangoblog': { # 项目核心模块日志器 + 'handlers': ['log_file', 'console'], # 输出到文件和控制台 'level': 'INFO', - 'propagate': True, + 'propagate': True, # 是否向上传递到根日志器(此处开启) }, - 'django.request': { - 'handlers': ['mail_admins'], + 'django.request': { # Django 请求模块日志器(记录请求相关错误) + 'handlers': ['mail_admins'], # 错误发送到管理员邮箱 'level': 'ERROR', - 'propagate': False, + 'propagate': False, # 不向上传递(避免重复记录) } } } + +# Static Files(静态文件配置:CSS/JS/图片等) +# 静态文件收集目录:执行 collectstatic 命令后,静态文件会汇总到此处(生产环境使用) +STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic') +# 静态文件 URL 前缀:前端通过 /static/ 访问静态文件 +STATIC_URL = '/static/' +# 全局静态文件目录:项目根目录下的 static 目录(存放全局静态文件) +STATICFILES = os.path.join(BASE_DIR, 'static') + +# 静态文件查找器:指定 Django 查找静态文件的路径(内置 + 第三方) STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - # other - 'compressor.finders.CompressorFinder', + 'django.contrib.staticfiles.finders.FileSystemFinder', # 查找全局 STATICFILES 目录 + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', # 查找各应用的 static 目录 + 'compressor.finders.CompressorFinder', # 查找压缩后的静态文件(第三方 compressor 应用) ) -COMPRESS_ENABLED = True -# COMPRESS_OFFLINE = True - +# 静态文件压缩配置(compressor 应用) +COMPRESS_ENABLED = True # 启用压缩(生产环境建议开启,提升加载速度) +# COMPRESS_OFFLINE = True # 离线压缩(预先生成压缩文件,生产环境推荐,此处注释按需启用) +# CSS 压缩过滤器:绝对路径处理 + 代码压缩 COMPRESS_CSS_FILTERS = [ - # creates absolute urls from relative ones 'compressor.filters.css_default.CssAbsoluteFilter', - # css minimizer 'compressor.filters.cssmin.CSSMinFilter' ] +# JS 压缩过滤器:代码压缩 COMPRESS_JS_FILTERS = [ 'compressor.filters.jsmin.JSMinFilter' ] + +# Media Files(媒体文件配置:用户上传的文件,如文章图片、头像) +# 媒体文件存储目录:项目根目录下的 uploads 目录 MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') +# 媒体文件 URL 前缀:前端通过 /media/ 访问上传的文件 MEDIA_URL = '/media/' + +# X-Frame-Options:防止点击劫持(SAMEORIGIN:仅允许同域页面嵌入当前页面) X_FRAME_OPTIONS = 'SAMEORIGIN' +# 默认模型主键类型:Django 3.2+ 新增,指定模型默认主键为 BigAutoField(64 位自增整数) DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + +# Elasticsearch 配置(按需启用:若环境变量指定 Elasticsearch 地址,则使用 Elasticsearch 替代 Whoosh) if os.environ.get('DJANGO_ELASTICSEARCH_HOST'): ELASTICSEARCH_DSL = { 'default': { - 'hosts': os.environ.get('DJANGO_ELASTICSEARCH_HOST') + 'hosts': os.environ.get('DJANGO_ELASTICSEARCH_HOST') # Elasticsearch 连接地址 }, } + # 替换 Haystack 搜索引擎为自定义的 Elasticsearch 引擎 HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine', }, } -# Plugin System -PLUGINS_DIR = BASE_DIR / 'plugins' + +# Plugin System(插件系统配置:自定义插件功能) +PLUGINS_DIR = BASE_DIR / 'plugins' # 插件目录:项目根目录下的 plugins 目录 +# 激活的插件列表:指定需要加载的插件(如文章版权、阅读时长统计等) ACTIVE_PLUGINS = [ - 'article_copyright', - 'reading_time', - 'external_links', - 'view_count', - 'seo_optimizer' + 'article_copyright', # 文章版权插件 + 'reading_time', # 阅读时长统计插件 + 'external_links', # 外部链接处理插件 + 'view_count', # 文章阅读量统计插件 + 'seo_optimizer' # SEO 优化插件 ] \ No newline at end of file -- 2.34.1 From bce979ce7e77f403b405c8e884ce5cd99d6874eb Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:26:44 +0800 Subject: [PATCH 36/41] Update sitemap.py --- src/DjangoBlog-master/djangoblog/sitemap.py | 41 ++++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/sitemap.py b/src/DjangoBlog-master/djangoblog/sitemap.py index 8b7d446..a02411f 100644 --- a/src/DjangoBlog-master/djangoblog/sitemap.py +++ b/src/DjangoBlog-master/djangoblog/sitemap.py @@ -1,59 +1,88 @@ +# 导入 Django 内置站点地图基类:用于快速实现标准化 sitemap.xml from django.contrib.sitemaps import Sitemap +# 导入 URL 反向解析工具:生成页面的绝对 URL(适配路由命名) from django.urls import reverse +# 导入博客核心模型:用于生成动态内容(文章、分类、标签)的站点地图 from blog.models import Article, Category, Tag +# 静态页面站点地图类:处理无数据库关联的静态页面(如博客首页) class StaticViewSitemap(Sitemap): + # 优先级:0.5(取值 0.0-1.0,值越高搜索引擎越优先抓取,静态页优先级中等) priority = 0.5 + # 更新频率:daily(每天更新,适合内容相对稳定但可能微调的静态页) changefreq = 'daily' + # 定义要包含的静态页面:返回路由名称列表(对应 urls.py 中命名的路由) def items(self): - return ['blog:index', ] + return ['blog:index', ] # 此处仅包含博客首页(路由名为 'blog:index') + # 生成静态页面的 URL:通过路由名称反向解析为绝对路径 def location(self, item): - return reverse(item) + return reverse(item) # item 为 items() 返回的路由名称,如 'blog:index' +# 文章站点地图类:处理博客文章的动态页面(核心内容,SEO 关键) class ArticleSiteMap(Sitemap): + # 更新频率:monthly(每月更新,适合文章发布后较少修改的场景) changefreq = "monthly" + # 优先级:0.6(高于静态页和分类/标签,文章是站点核心内容,优先抓取) priority = "0.6" + # 定义要包含的文章:仅筛选“已发布”状态的文章(排除草稿、私有文章) def items(self): return Article.objects.filter(status='p') + # 文章最后更新时间:用于搜索引擎判断内容是否更新,提升抓取效率 def lastmod(self, obj): - return obj.last_modify_time + return obj.last_modify_time # 引用文章模型的“最后修改时间”字段 +# 分类站点地图类:处理文章分类页面(聚合类内容,辅助 SEO) class CategorySiteMap(Sitemap): + # 更新频率:Weekly(每周更新,分类内容更新频率低于文章) changefreq = "Weekly" + # 优先级:0.6(与文章同级,分类页是重要的内容聚合入口) priority = "0.6" + # 定义要包含的分类:获取所有分类(无论是否有文章,确保分类页被收录) def items(self): return Category.objects.all() + # 分类最后更新时间:判断分类下内容是否有变化(如新增/修改文章) def lastmod(self, obj): - return obj.last_modify_time + return obj.last_modify_time # 引用分类模型的“最后修改时间”字段 +# 标签站点地图类:处理文章标签页面(细分内容聚合,补充 SEO 覆盖) class TagSiteMap(Sitemap): + # 更新频率:Weekly(每周更新,标签内容更新频率与分类一致) changefreq = "Weekly" + # 优先级:0.3(低于文章和分类,标签页是辅助导航入口,优先级较低) priority = "0.3" + # 定义要包含的标签:获取所有标签(确保所有标签页被搜索引擎收录) def items(self): return Tag.objects.all() + # 标签最后更新时间:判断标签下内容是否有变化 def lastmod(self, obj): - return obj.last_modify_time + return obj.last_modify_time # 引用标签模型的“最后修改时间”字段 +# 用户站点地图类:处理文章作者页面(展示用户发布的所有文章,提升作者页曝光) class UserSiteMap(Sitemap): + # 更新频率:Weekly(每周更新,用户发布文章频率通常较低) changefreq = "Weekly" + # 优先级:0.3(与标签同级,作者页是辅助内容入口) priority = "0.3" + # 定义要包含的用户:获取所有发布过文章的作者(去重,避免重复收录同一用户) def items(self): + # 1. 从所有文章中提取作者字段 → 2. 转集合去重 → 3. 转列表返回 return list(set(map(lambda x: x.author, Article.objects.all()))) + # 用户页面最后更新时间:用用户“注册时间”替代(简化逻辑,也可改为用户最新文章发布时间) def lastmod(self, obj): - return obj.date_joined + return obj.date_joined # 引用用户模型的“注册时间”字段 \ No newline at end of file -- 2.34.1 From 3608f14abe5fc0ece1e916a0574c354376cdfcfa Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:28:51 +0800 Subject: [PATCH 37/41] Update spider_notify.py --- .../djangoblog/spider_notify.py | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/spider_notify.py b/src/DjangoBlog-master/djangoblog/spider_notify.py index 7b909e9..4d6d1cd 100644 --- a/src/DjangoBlog-master/djangoblog/spider_notify.py +++ b/src/DjangoBlog-master/djangoblog/spider_notify.py @@ -1,21 +1,43 @@ +# 导入日志模块:记录推送过程的成功信息与错误,便于排查问题 import logging - +# 导入 HTTP 请求库:用于向百度搜索引擎接口发送 POST 请求 import requests +# 导入 Django 项目配置:获取百度主动推送的接口 URL(从 settings.py 读取) from django.conf import settings +# 初始化日志对象:指定日志归属为当前模块,便于区分不同模块的日志 logger = logging.getLogger(__name__) +# 搜索引擎推送工具类:封装向百度等搜索引擎主动提交页面的逻辑 class SpiderNotify(): @staticmethod def baidu_notify(urls): + """ + 向百度搜索引擎主动推送页面(基于百度站长平台的“链接提交”接口) + 目的:让百度快速发现新页面,缩短收录周期(提升 SEO 效率) + + Args: + urls: 待推送的 URL 列表(如 ['https://xxx.com/article/1/', 'https://xxx.com/article/2/']) + """ try: + # 格式化请求数据:百度接口要求 URL 以换行符(\n)分隔,拼接成字符串 data = '\n'.join(urls) + # 发送 POST 请求:调用 settings 中配置的百度推送接口 URL result = requests.post(settings.BAIDU_NOTIFY_URL, data=data) + # 记录推送结果:将百度返回的响应文本(如成功/失败数量)写入日志 logger.info(result.text) except Exception as e: + # 捕获异常(如网络错误、接口超时等),记录错误信息到日志 logger.error(e) @staticmethod def notify(url): - SpiderNotify.baidu_notify(url) + """ + 通用推送方法:统一入口,当前仅调用百度推送(可扩展支持其他搜索引擎) + + Args: + url: 待推送的 URL(支持单个 URL 或 URL 列表,此处兼容百度推送的列表格式) + """ + # 调用百度推送方法,实现页面提交 + SpiderNotify.baidu_notify(url) \ No newline at end of file -- 2.34.1 From c4f725f8f499ef74b5b902794d4d3d98ab7ad7cb Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:29:58 +0800 Subject: [PATCH 38/41] Update tests.py --- src/DjangoBlog-master/djangoblog/tests.py | 35 +++++++++++------------ 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/tests.py b/src/DjangoBlog-master/djangoblog/tests.py index 01237d9..9efd6d1 100644 --- a/src/DjangoBlog-master/djangoblog/tests.py +++ b/src/DjangoBlog-master/djangoblog/tests.py @@ -1,32 +1,29 @@ +# 导入 Django 内置的测试基类:提供单元测试所需的基础功能(如断言、测试环境初始化) from django.test import TestCase +# 导入项目自定义工具模块:测试其中的工具函数(如加密、Markdown解析、字典转URL参数) from djangoblog.utils import * +# 自定义测试类:继承 TestCase,用于测试 djangoblog 项目的工具函数功能 class DjangoBlogTest(TestCase): + # 测试前置方法:在每个测试方法(以 test_ 开头)执行前自动调用 + # 用于初始化测试数据、配置测试环境等(此处暂无需初始化,留空) def setUp(self): pass + # 核心测试方法:测试 utils 模块中的多个工具函数(命名以 test_ 开头,Django 会自动识别执行) def test_utils(self): - md5 = get_sha256('test') + # 1. 测试 SHA256 加密函数(get_sha256) + # 对字符串 'test' 进行 SHA256 加密,获取加密结果 + md5 = get_sha256('test') # 注意:函数名是 get_sha256,实际功能是 SHA256 加密(非 MD5,可能是命名习惯) + # 断言:加密结果不为空(验证函数能正常返回加密值,未抛出异常) self.assertIsNotNone(md5) - c = CommonMarkdown.get_markdown(''' - # Title1 - - ```python - import os - ``` - - [url](https://www.lylinux.net/) - - [ddd](http://www.baidu.com) + # 2. 测试 Markdown 解析函数(CommonMarkdown.get_markdown) + # 定义一段包含标题、Python代码块、超链接的 Markdown 文本 + c = CommonMarkdown.get_markdown(''' + # Title1 # 一级标题 - ''') - self.assertIsNotNone(c) - d = { - 'd': 'key1', - 'd2': 'key2' - } - data = parse_dict_to_url(d) - self.assertIsNotNone(data) + ```python # Python 代码块 + import os \ No newline at end of file -- 2.34.1 From 14db64d21cad527bcd9a854a56d7c412d138cd13 Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:32:39 +0800 Subject: [PATCH 39/41] Update urls.py --- src/DjangoBlog-master/djangoblog/urls.py | 74 ++++++++++++++++++------ 1 file changed, 55 insertions(+), 19 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/urls.py b/src/DjangoBlog-master/djangoblog/urls.py index 4aae58a..b7a3d07 100644 --- a/src/DjangoBlog-master/djangoblog/urls.py +++ b/src/DjangoBlog-master/djangoblog/urls.py @@ -13,52 +13,88 @@ Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ +# 导入项目配置:用于获取静态文件/媒体文件路径、DEBUG 状态等 from django.conf import settings +# 导入国际化路由工具:生成带语言前缀的路由(如 /en/admin/、/zh-hans/blog/) from django.conf.urls.i18n import i18n_patterns +# 导入静态文件路由工具:开发环境下提供静态文件访问(生产环境需 Nginx 处理) from django.conf.urls.static import static +# 导入站点地图视图:关联站点地图配置,生成 sitemap.xml from django.contrib.sitemaps.views import sitemap +# 导入 URL 路由组件:path 用于精确匹配,include 用于引入子应用路由 from django.urls import path, include +# 导入 re_path:支持正则表达式匹配 URL(适配复杂路由场景) from django.urls import re_path +# 导入 Haystack 搜索视图工厂:用于自定义搜索视图和表单 from haystack.views import search_view_factory -from blog.views import EsSearchView -from djangoblog.admin_site import admin_site -from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm -from djangoblog.feeds import DjangoBlogFeed -from djangoblog.sitemap import ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap +# 导入项目自定义视图和配置:关联核心功能路由 +from blog.views import EsSearchView # 自定义 Elasticsearch 搜索视图 +from djangoblog.admin_site import admin_site # 自定义后台管理站点(替代默认 admin) +from djangoblog.elasticsearch_backend import ElasticSearchModelSearchForm # 自定义搜索表单 +from djangoblog.feeds import DjangoBlogFeed # RSS 订阅 Feed 视图 +from djangoblog.sitemap import ( # 站点地图配置类 + ArticleSiteMap, CategorySiteMap, StaticViewSitemap, TagSiteMap, UserSiteMap +) +# 站点地图聚合配置:将各类型站点地图归类,用于生成统一的 sitemap.xml sitemaps = { - - 'blog': ArticleSiteMap, - 'Category': CategorySiteMap, - 'Tag': TagSiteMap, - 'User': UserSiteMap, - 'static': StaticViewSitemap + 'blog': ArticleSiteMap, # 文章站点地图 + 'Category': CategorySiteMap, # 分类站点地图 + 'Tag': TagSiteMap, # 标签站点地图 + 'User': UserSiteMap, # 作者站点地图 + 'static': StaticViewSitemap # 静态页面站点地图 } -handler404 = 'blog.views.page_not_found_view' -handler500 = 'blog.views.server_error_view' -handle403 = 'blog.views.permission_denied_view' +# 自定义错误页面路由:指定 404/500/403 错误时跳转的视图 +handler404 = 'blog.views.page_not_found_view' # 404 页面未找到 +handler500 = 'blog.views.server_error_view' # 500 服务器内部错误 +handle403 = 'blog.views.permission_denied_view'# 403 权限拒绝(注意变量名应为 handler403,此处可能是笔误) +# 基础 URL 路由:不包含语言前缀的公共路由 urlpatterns = [ + # 国际化路由:提供语言切换功能(如 /i18n/setlang/ 接口) path('i18n/', include('django.conf.urls.i18n')), ] + +# 带语言前缀的路由:通过 i18n_patterns 自动添加语言前缀(如 /zh-hans/、/en/) +# prefix_default_language=False:默认语言不显示前缀(如中文默认不显示 /zh-hans/,直接用根路径) urlpatterns += i18n_patterns( + # 1. 后台管理路由:使用自定义的 admin_site(替代默认 admin),访问路径如 /admin/ re_path(r'^admin/', admin_site.urls), + # 2. 博客核心路由:引入 blog 应用的子路由,命名空间为 'blog'(路由名如 blog:index) re_path(r'', include('blog.urls', namespace='blog')), + # 3. Markdown 编辑器路由:引入 mdeditor 第三方应用的路由,用于文章编辑时的 Markdown 预览 re_path(r'mdeditor/', include('mdeditor.urls')), + # 4. 评论路由:引入 comments 应用的子路由,命名空间为 'comment' re_path(r'', include('comments.urls', namespace='comment')), + # 5. 用户账户路由:引入 accounts 应用的子路由(登录、注册、个人中心),命名空间为 'account' re_path(r'', include('accounts.urls', namespace='account')), + # 6. 第三方登录路由:引入 oauth 应用的子路由(GitHub、微博登录),命名空间为 'oauth' re_path(r'', include('oauth.urls', namespace='oauth')), + # 7. 站点地图路由:生成 sitemap.xml,供搜索引擎抓取(访问路径 /sitemap.xml) re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), + # 8. RSS 订阅路由:提供两种访问路径(/feed/ 和 /rss/),均指向 DjangoBlogFeed 视图 re_path(r'^feed/$', DjangoBlogFeed()), re_path(r'^rss/$', DjangoBlogFeed()), - re_path('^search', search_view_factory(view_class=EsSearchView, form_class=ElasticSearchModelSearchForm), - name='search'), + # 9. 搜索路由:使用自定义的搜索视图(EsSearchView)和表单(ElasticSearchModelSearchForm) + # 访问路径如 /search?q=关键词,命名为 'search' + re_path('^search', search_view_factory( + view_class=EsSearchView, + form_class=ElasticSearchModelSearchForm + ), name='search'), + # 10. 服务器管理路由:引入 servermanager 应用的子路由(命令执行、日志查看),命名空间为 'servermanager' re_path(r'', include('servermanager.urls', namespace='servermanager')), - re_path(r'', include('owntracks.urls', namespace='owntracks')) - , prefix_default_language=False) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + # 11. 位置追踪路由:引入 owntracks 应用的子路由(位置数据查看),命名空间为 'owntracks' + re_path(r'', include('owntracks.urls', namespace='owntracks')), + prefix_default_language=False # 默认语言不显示语言前缀 +) + +# 静态文件路由:开发环境下(DEBUG=True)通过 Django 提供静态文件访问(生产环境需注释,用 Nginx 处理) +urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + +# 媒体文件路由:仅在 DEBUG=True(开发环境)时生效,提供用户上传文件的访问(如 /media/avatar.jpg) if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, - document_root=settings.MEDIA_ROOT) + document_root=settings.MEDIA_ROOT) \ No newline at end of file -- 2.34.1 From 46a670b6c9b334db8e89b04c1cae50975cd406ef Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:38:02 +0800 Subject: [PATCH 40/41] Update utils.py --- src/DjangoBlog-master/djangoblog/utils.py | 295 +++++++++++++++++----- 1 file changed, 233 insertions(+), 62 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/utils.py b/src/DjangoBlog-master/djangoblog/utils.py index 57f63dc..0e52b07 100644 --- a/src/DjangoBlog-master/djangoblog/utils.py +++ b/src/DjangoBlog-master/djangoblog/utils.py @@ -2,105 +2,173 @@ # encoding: utf-8 -import logging -import os -import random -import string -import uuid -from hashlib import sha256 - -import bleach -import markdown -import requests -from django.conf import settings -from django.contrib.sites.models import Site -from django.core.cache import cache -from django.templatetags.static import static - +import logging # 日志模块:记录操作信息和错误 +import os # 系统操作模块:处理文件路径、目录创建等 +import random # 随机数模块:生成验证码等随机内容 +import string # 字符串模块:提供数字、字母等常量 +import uuid # 唯一模块:生成唯一标识符(用于头像文件名) +from hashlib import sha256 # 加密模块:提供 SHA256 加密算法 + +import bleach # HTML 清理模块:过滤不安全的 HTML 标签(防 XSS 攻击) +import markdown # Markdown 解析模块:将 Markdown 文本转为 HTML +import requests # HTTP 请求模块:下载网络资源(如用户头像) +from django.conf import settings # Django 配置:获取项目设置(如静态文件路径) +from django.contrib.sites.models import Site # 站点模型:获取当前站点信息(域名等) +from django.core.cache import cache # 缓存模块:操作 Django 缓存(获取/设置/删除) +from django.templatetags.static import static # 静态文件工具:生成静态文件的 URL + + +# 初始化日志对象:指定日志归属为当前模块,便于日志分类 logger = logging.getLogger(__name__) def get_max_articleid_commentid(): + """ + 获取当前最大的文章 ID 和评论 ID(用于数据统计或初始化) + + Returns: + tuple: (最大文章 ID, 最大评论 ID) + """ + # 延迟导入模型:避免循环导入问题(工具模块可能被模型模块引用) from blog.models import Article from comments.models import Comment + # 返回最新文章和评论的主键(ID) return (Article.objects.latest().pk, Comment.objects.latest().pk) def get_sha256(str): + """ + 对字符串进行 SHA256 加密(用于密码加密、唯一标识生成等) + + Args: + str: 待加密的字符串 + + Returns: + str: 加密后的 64 位十六进制字符串 + """ + # 创建 SHA256 加密对象,需先将字符串转为字节流(指定编码 utf-8) m = sha256(str.encode('utf-8')) + # 返回十六进制加密结果 return m.hexdigest() def cache_decorator(expiration=3 * 60): + """ + 缓存装饰器:装饰函数,将函数返回值缓存指定时间(默认 3 分钟) + + 作用:减少重复计算或数据库查询,提升性能 + + Args: + expiration: 缓存有效期(秒),默认 3 分钟 + + Returns: + 装饰器函数:包装原函数,实现缓存逻辑 + """ def wrapper(func): def news(*args, **kwargs): + # 尝试生成缓存键(优先使用视图对象的 get_cache_key 方法) try: - view = args[0] - key = view.get_cache_key() + view = args[0] # 若第一个参数是视图对象 + key = view.get_cache_key() # 使用视图自带的缓存键 except: - key = None + key = None # 非视图函数,需自定义缓存键 + + # 若未生成缓存键,则基于函数和参数生成唯一键 if not key: + # 将函数、参数转为字符串,确保唯一性 unique_str = repr((func, args, kwargs)) - + # 对字符串进行 SHA256 加密,生成固定长度的缓存键 m = sha256(unique_str.encode('utf-8')) key = m.hexdigest() + + # 尝试从缓存获取数据 value = cache.get(key) if value is not None: - # logger.info('cache_decorator get cache:%s key:%s' % (func.__name__, key)) + # 缓存命中:返回缓存值(处理 None 的特殊标记) if str(value) == '__default_cache_value__': return None else: return value else: + # 缓存未命中:执行原函数获取结果 logger.debug( 'cache_decorator set cache:%s key:%s' % (func.__name__, key)) value = func(*args, **kwargs) + # 缓存结果(用特殊标记表示 None,避免缓存不生效) if value is None: cache.set(key, '__default_cache_value__', expiration) else: cache.set(key, value, expiration) return value - return news - return wrapper def expire_view_cache(path, servername, serverport, key_prefix=None): ''' - 刷新视图缓存 - :param path:url路径 - :param servername:host - :param serverport:端口 - :param key_prefix:前缀 - :return:是否成功 + 主动刷新指定 URL 路径的视图缓存(用于数据更新后清理旧缓存) + + Args: + path: URL 路径(如 '/article/1/') + servername: 服务器域名(如 'www.example.com') + serverport: 服务器端口(如 80) + key_prefix: 缓存键前缀(与视图缓存配置一致) + + Returns: + bool: 缓存是否成功删除 ''' - from django.http import HttpRequest - from django.utils.cache import get_cache_key - + from django.http import HttpRequest # 延迟导入:避免启动时依赖冲突 + from django.utils.cache import get_cache_key # 获取视图缓存键的工具 + + # 构造模拟请求对象(用于生成缓存键) request = HttpRequest() request.META = {'SERVER_NAME': servername, 'SERVER_PORT': serverport} request.path = path - + + # 获取该请求对应的缓存键 key = get_cache_key(request, key_prefix=key_prefix, cache=cache) if key: logger.info('expire_view_cache:get key:{path}'.format(path=path)) + # 若缓存存在,则删除 if cache.get(key): cache.delete(key) return True return False -@cache_decorator() +@cache_decorator() # 应用缓存装饰器:缓存当前站点信息(默认 3 分钟) def get_current_site(): + """ + 获取当前站点信息(域名等),从缓存获取以减少数据库查询 + + Returns: + Site: Django Site 模型实例 + """ site = Site.objects.get_current() return site class CommonMarkdown: + """ + Markdown 解析工具类:将 Markdown 文本转为 HTML,并支持提取目录(TOC) + """ @staticmethod def _convert_markdown(value): + """ + 内部方法:执行 Markdown 转换,返回 HTML 内容和目录 + + Args: + value: Markdown 格式的文本 + + Returns: + tuple: (转换后的 HTML 内容, 目录 HTML) + """ + # 初始化 Markdown 解析器,启用扩展: + # - extra: 支持表格、脚注等扩展语法 + # - codehilite: 代码高亮 + # - toc: 生成目录 + # - tables: 表格支持(extra 已包含,此处冗余可能为兼容) md = markdown.Markdown( extensions=[ 'extra', @@ -109,124 +177,227 @@ class CommonMarkdown: 'tables', ] ) - body = md.convert(value) - toc = md.toc + body = md.convert(value) # 转换文本为 HTML + toc = md.toc # 提取目录 HTML return body, toc @staticmethod def get_markdown_with_toc(value): + """ + 获取带目录的 Markdown 转换结果 + + Args: + value: Markdown 文本 + + Returns: + tuple: (HTML 内容, 目录 HTML) + """ body, toc = CommonMarkdown._convert_markdown(value) return body, toc @staticmethod def get_markdown(value): + """ + 获取仅包含 HTML 内容的转换结果(忽略目录) + + Args: + value: Markdown 文本 + + Returns: + str: 转换后的 HTML 内容 + """ body, toc = CommonMarkdown._convert_markdown(value) return body def send_email(emailto, title, content): + """ + 发送邮件(通过信号机制触发,解耦发送逻辑) + + Args: + emailto: 收件人列表(如 ['user@example.com']) + title: 邮件标题 + content: 邮件内容(HTML 格式) + """ + # 延迟导入信号:避免循环导入 from djangoblog.blog_signals import send_email_signal + # 发送信号,由信号接收器(如 send_email_signal_handler)处理实际发送 send_email_signal.send( - send_email.__class__, + send_email.__class__, # 信号发送者(此处用当前函数的类) emailto=emailto, title=title, content=content) def generate_code() -> str: - """生成随机数验证码""" + """ + 生成 6 位数字验证码(用于邮箱验证、登录验证码等) + + Returns: + str: 6 位数字字符串 + """ + # 从数字字符集中随机选择 6 个,拼接为字符串 return ''.join(random.sample(string.digits, 6)) def parse_dict_to_url(dict): - from urllib.parse import quote + """ + 将字典转换为 URL 参数字符串(如 {'a':1, 'b':2} → 'a=1&b=2') + + Args: + dict: 键值对字典 + + Returns: + str: URL 编码后的参数字符串 + """ + from urllib.parse import quote # 延迟导入:避免启动依赖 + # 对键和值进行 URL 编码(保留 '/' 不编码),再拼接为 "k=v&k2=v2" 格式 url = '&'.join(['{}={}'.format(quote(k, safe='/'), quote(v, safe='/')) for k, v in dict.items()]) return url def get_blog_setting(): + """ + 获取博客系统设置(如站点名称、描述等),优先从缓存获取 + + Returns: + BlogSettings: 博客设置模型实例 + """ + # 尝试从缓存获取 value = cache.get('get_blog_setting') if value: return value else: + # 延迟导入模型:避免循环导入 from blog.models import BlogSettings + # 若数据库中无设置记录,初始化默认设置 if not BlogSettings.objects.count(): setting = BlogSettings() - setting.site_name = 'djangoblog' - setting.site_description = '基于Django的博客系统' - setting.site_seo_description = '基于Django的博客系统' - setting.site_keywords = 'Django,Python' - setting.article_sub_length = 300 - setting.sidebar_article_count = 10 - setting.sidebar_comment_count = 5 - setting.show_google_adsense = False - setting.open_site_comment = True - setting.analytics_code = '' - setting.beian_code = '' - setting.show_gongan_code = False - setting.comment_need_review = False - setting.save() + setting.site_name = 'djangoblog' # 站点名称 + setting.site_description = '基于Django的博客系统' # 站点描述 + setting.site_seo_description = '基于Django的博客系统' # SEO 描述 + setting.site_keywords = 'Django,Python' # SEO 关键词 + setting.article_sub_length = 300 # 文章摘要长度 + setting.sidebar_article_count = 10 # 侧边栏显示文章数 + setting.sidebar_comment_count = 5 # 侧边栏显示评论数 + setting.show_google_adsense = False # 是否显示谷歌广告 + setting.open_site_comment = True # 是否开启评论功能 + setting.analytics_code = '' # 统计代码(如百度统计) + setting.beian_code = '' # 备案号 + setting.show_gongan_code = False # 是否显示公安备案 + setting.comment_need_review = False # 评论是否需要审核 + setting.save() # 保存默认设置 + # 从数据库获取设置 value = BlogSettings.objects.first() logger.info('set cache get_blog_setting') + # 缓存设置(默认使用 cache_decorator 的有效期,或依赖全局缓存配置) cache.set('get_blog_setting', value) return value def save_user_avatar(url): ''' - 保存用户头像 - :param url:头像url - :return: 本地路径 + 下载并保存用户头像到本地(用于第三方登录时的头像同步) + + Args: + url: 头像的网络 URL + + Returns: + str: 本地头像的静态文件 URL(如 '/static/avatar/xxx.jpg') ''' - logger.info(url) + logger.info(url) # 记录头像 URL try: + # 本地头像存储目录(静态文件目录下的 avatar 文件夹) basedir = os.path.join(settings.STATICFILES, 'avatar') + # 发送 HTTP 请求下载头像(超时 2 秒) rsp = requests.get(url, timeout=2) - if rsp.status_code == 200: + if rsp.status_code == 200: # 下载成功 + # 若目录不存在则创建 if not os.path.exists(basedir): os.makedirs(basedir) + # 验证 URL 是否为图片格式(通过文件扩展名判断) image_extensions = ['.jpg', '.png', 'jpeg', '.gif'] isimage = len([i for i in image_extensions if url.endswith(i)]) > 0 + # 提取文件扩展名,默认为 .jpg ext = os.path.splitext(url)[1] if isimage else '.jpg' + # 生成唯一文件名(UUID 避免冲突) save_filename = str(uuid.uuid4().hex) + ext logger.info('保存用户头像:' + basedir + save_filename) + # 写入文件到本地目录 with open(os.path.join(basedir, save_filename), 'wb+') as file: file.write(rsp.content) + # 返回本地头像的静态 URL return static('avatar/' + save_filename) except Exception as e: + # 下载失败(如网络错误、超时),记录错误并返回默认头像 logger.error(e) return static('blog/img/avatar.png') def delete_sidebar_cache(): - from blog.models import LinkShowType + """ + 删除侧边栏相关缓存(当侧边栏内容更新时调用,如新增文章、评论) + """ + from blog.models import LinkShowType # 延迟导入:避免循环依赖 + # 侧边栏缓存键格式为 "sidebar + 链接类型值"(如 sidebar0、sidebar1) keys = ["sidebar" + x for x in LinkShowType.values] + # 遍历删除所有侧边栏缓存键 for k in keys: logger.info('delete sidebar key:' + k) cache.delete(k) def delete_view_cache(prefix, keys): - from django.core.cache.utils import make_template_fragment_key + """ + 删除指定模板片段的缓存(用于模板中用 {% cache %} 标签缓存的内容) + + Args: + prefix: 缓存前缀(与模板中 {% cache %} 标签的前缀一致) + keys: 缓存键的参数列表(与模板中 {% cache %} 标签的参数一致) + """ + from django.core.cache.utils import make_template_fragment_key # 生成模板缓存键的工具 + # 生成模板片段的缓存键 key = make_template_fragment_key(prefix, keys) + # 删除缓存 cache.delete(key) def get_resource_url(): + """ + 获取静态资源的基础 URL(用于动态生成资源路径) + + Returns: + str: 静态资源 URL 前缀(如 'http://example.com/static/') + """ if settings.STATIC_URL: return settings.STATIC_URL else: + # 若未配置 STATIC_URL,从当前站点域名生成 site = get_current_site() return 'http://' + site.domain + '/static/' +# HTML 清理配置:允许的标签和属性(防止 XSS 攻击) ALLOWED_TAGS = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code', 'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul', 'h1', - 'h2', 'p'] -ALLOWED_ATTRIBUTES = {'a': ['href', 'title'], 'abbr': ['title'], 'acronym': ['title']} + 'h2', 'p'] # 允许的 HTML 标签 +ALLOWED_ATTRIBUTES = { # 允许的标签属性(键为标签,值为属性列表) + 'a': ['href', 'title'], + 'abbr': ['title'], + 'acronym': ['title'] +} def sanitize_html(html): - return bleach.clean(html, tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRIBUTES) + """ + 清理 HTML 内容,仅保留允许的标签和属性(防 XSS 攻击) + + Args: + html: 原始 HTML 字符串 + + Returns: + str: 清理后的安全 HTML 字符串 + """ + return bleach.clean(html, tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRIBUTES) \ No newline at end of file -- 2.34.1 From a242b0638d5be7d02e628df1181cb453065e2e4b Mon Sep 17 00:00:00 2001 From: plhw57tbe <2723863608@qq.com> Date: Sun, 19 Oct 2025 23:39:57 +0800 Subject: [PATCH 41/41] Update wsgi.py --- src/DjangoBlog-master/djangoblog/wsgi.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/DjangoBlog-master/djangoblog/wsgi.py b/src/DjangoBlog-master/djangoblog/wsgi.py index 2295efd..10a7649 100644 --- a/src/DjangoBlog-master/djangoblog/wsgi.py +++ b/src/DjangoBlog-master/djangoblog/wsgi.py @@ -6,11 +6,18 @@ It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/ """ - +# 导入系统模块:用于设置环境变量 import os +# 导入 Django WSGI 核心函数:生成符合 WSGI 标准的应用对象 from django.core.wsgi import get_wsgi_application +# 设置 Django 项目的配置模块环境变量 +# 作用:告诉 Django 启动时加载哪个配置文件(此处为项目根目录下的 djangoblog.settings) +# 部署时可通过修改该值切换配置(如 djangoblog.settings.production 对应生产环境配置) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoblog.settings") -application = get_wsgi_application() +# 生成 WSGI 应用对象 +# 作用:将 Django 项目包装为 WSGI 兼容的应用,供 WSGI 服务器(如 Gunicorn、uWSGI)调用 +# 该对象是 Django 与 Web 服务器交互的核心入口 +application = get_wsgi_application() \ No newline at end of file -- 2.34.1