diff --git a/src/accounts/__pycache__/__init__.cpython-311.pyc b/src/accounts/__pycache__/__init__.cpython-311.pyc index e559632..6df7efd 100644 Binary files a/src/accounts/__pycache__/__init__.cpython-311.pyc and b/src/accounts/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/admin.cpython-311.pyc b/src/accounts/__pycache__/admin.cpython-311.pyc index 4c38d84..52df722 100644 Binary files a/src/accounts/__pycache__/admin.cpython-311.pyc and b/src/accounts/__pycache__/admin.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/apps.cpython-311.pyc b/src/accounts/__pycache__/apps.cpython-311.pyc index a477dba..b2c7794 100644 Binary files a/src/accounts/__pycache__/apps.cpython-311.pyc and b/src/accounts/__pycache__/apps.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/forms.cpython-311.pyc b/src/accounts/__pycache__/forms.cpython-311.pyc index 6acaba6..aa77d3d 100644 Binary files a/src/accounts/__pycache__/forms.cpython-311.pyc and b/src/accounts/__pycache__/forms.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/models.cpython-311.pyc b/src/accounts/__pycache__/models.cpython-311.pyc index 9346070..6f3b505 100644 Binary files a/src/accounts/__pycache__/models.cpython-311.pyc and b/src/accounts/__pycache__/models.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/urls.cpython-311.pyc b/src/accounts/__pycache__/urls.cpython-311.pyc index 99e52e7..0c15f76 100644 Binary files a/src/accounts/__pycache__/urls.cpython-311.pyc and b/src/accounts/__pycache__/urls.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/utils.cpython-311.pyc b/src/accounts/__pycache__/utils.cpython-311.pyc index ac69269..a59e631 100644 Binary files a/src/accounts/__pycache__/utils.cpython-311.pyc and b/src/accounts/__pycache__/utils.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/views.cpython-311.pyc b/src/accounts/__pycache__/views.cpython-311.pyc index 25d7f2f..9c69616 100644 Binary files a/src/accounts/__pycache__/views.cpython-311.pyc and b/src/accounts/__pycache__/views.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc index 8f8a7f6..1fd398b 100644 Binary files a/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc b/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc index 569e52a..b7c65d0 100644 Binary files a/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc and b/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc b/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc index 1619412..9b61b6f 100644 Binary files a/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc and b/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc b/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc index 9e34952..7740808 100644 Binary files a/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/__pycache__/__init__.cpython-311.pyc b/src/blog/__pycache__/__init__.cpython-311.pyc index dd680d9..d86d6ca 100644 Binary files a/src/blog/__pycache__/__init__.cpython-311.pyc and b/src/blog/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/__pycache__/admin.cpython-311.pyc b/src/blog/__pycache__/admin.cpython-311.pyc index 673d62b..63d1e4c 100644 Binary files a/src/blog/__pycache__/admin.cpython-311.pyc and b/src/blog/__pycache__/admin.cpython-311.pyc differ diff --git a/src/blog/__pycache__/apps.cpython-311.pyc b/src/blog/__pycache__/apps.cpython-311.pyc index dce2660..a07af6a 100644 Binary files a/src/blog/__pycache__/apps.cpython-311.pyc and b/src/blog/__pycache__/apps.cpython-311.pyc differ diff --git a/src/blog/__pycache__/documents.cpython-311.pyc b/src/blog/__pycache__/documents.cpython-311.pyc index a587d32..562db71 100644 Binary files a/src/blog/__pycache__/documents.cpython-311.pyc and b/src/blog/__pycache__/documents.cpython-311.pyc differ diff --git a/src/blog/__pycache__/middleware.cpython-311.pyc b/src/blog/__pycache__/middleware.cpython-311.pyc index 0079e49..f6158d6 100644 Binary files a/src/blog/__pycache__/middleware.cpython-311.pyc and b/src/blog/__pycache__/middleware.cpython-311.pyc differ diff --git a/src/blog/__pycache__/models.cpython-311.pyc b/src/blog/__pycache__/models.cpython-311.pyc index dabba95..48954c4 100644 Binary files a/src/blog/__pycache__/models.cpython-311.pyc and b/src/blog/__pycache__/models.cpython-311.pyc differ diff --git a/src/blog/__pycache__/urls.cpython-311.pyc b/src/blog/__pycache__/urls.cpython-311.pyc index 92719d4..35bcca4 100644 Binary files a/src/blog/__pycache__/urls.cpython-311.pyc and b/src/blog/__pycache__/urls.cpython-311.pyc differ diff --git a/src/blog/__pycache__/views.cpython-311.pyc b/src/blog/__pycache__/views.cpython-311.pyc index 30fdf11..1fa47c8 100644 Binary files a/src/blog/__pycache__/views.cpython-311.pyc and b/src/blog/__pycache__/views.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc index 146b262..28f51ce 100644 Binary files a/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc index 82b28d1..d20b0f5 100644 Binary files a/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc b/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc index e2bb9d7..4f64730 100644 Binary files a/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc and b/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc index 872d089..04130f9 100644 Binary files a/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc index 6333d15..5b2b11f 100644 Binary files a/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc b/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc index e1a5b4d..c3b50c1 100644 Binary files a/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc and b/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/__init__.cpython-311.pyc b/src/blog/migrations/__pycache__/__init__.cpython-311.pyc index b2ae81a..a2cdf3b 100644 Binary files a/src/blog/migrations/__pycache__/__init__.cpython-311.pyc and b/src/blog/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/static/blog/css/custom-style.css b/src/blog/static/blog/css/custom-style.css new file mode 100644 index 0000000..c9885a7 --- /dev/null +++ b/src/blog/static/blog/css/custom-style.css @@ -0,0 +1,91 @@ + +/* 自定义样式 - 修改导航栏背景色和按钮样式 */ + +/* 导航栏背景色改为天蓝色 */ +.main-navigation { + background: linear-gradient(to right, #2e9ac5, #66b8db) !important; +} + +/* 文章标题链接样式 - 去掉蓝色按钮效果 */ +.entry-title a { + color: #2c3e50 !important; + text-decoration: none !important; + background: none !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; +} + +.entry-title a:hover { + color: #3498db !important; + text-decoration: underline !important; + background: none !important; +} + +/* 侧边栏链接样式 - 去掉蓝色按钮效果 */ +.widget a { + color: #34495e !important; + text-decoration: none !important; + background: none !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; +} + +.widget a:hover { + color: #3498db !important; + text-decoration: underline !important; + background: none !important; +} + +/* 文章阅读更多链接 - 去掉蓝色按钮效果 */ +.read-more { + background: none !important; + color: #3498db !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; + text-decoration: underline !important; +} + +.read-more:hover { + background: none !important; + color: #2980b9 !important; + transform: none !important; + box-shadow: none !important; +} + +/* 文章链接 - 去掉蓝色按钮效果 */ +a[href*="/p/"], +a[href*="/article/"] { + background: none !important; + color: #3498db !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; + text-decoration: underline !important; + margin: 0 !important; +} + +a[href*="/p/"]:hover, +a[href*="/article/"]:hover { + background: none !important; + color: #2980b9 !important; + transform: none !important; + box-shadow: none !important; +} + +/* 背景图片样式 */ +body { + background-color: #f8f9fa; + background-image: url('/static/blog/img/default_bg.jpg'); + background-size: cover; + background-position: center; + background-attachment: fixed; + background-repeat: no-repeat; +} + +/* 网站容器样式,确保背景图片可见 */ +.site { + background-color: rgba(255, 255, 255, 0.9); +} diff --git a/src/blog/static/blog/css/icons.css b/src/blog/static/blog/css/icons.css new file mode 100644 index 0000000..9a8e570 --- /dev/null +++ b/src/blog/static/blog/css/icons.css @@ -0,0 +1,90 @@ + +/* 简单的图标样式 */ + +/* 图标基础样式 */ +[class^="icon-"], [class*=" icon-"] { + display: inline-block; + width: 1em; + height: 1em; + margin-right: 0.2em; + line-height: 1; + font-style: normal; + font-weight: normal; + text-align: center; + text-decoration: inherit; + text-transform: none; + speak: none; +} + +/* 文件夹图标 */ +.icon-folder:before { + content: "📁"; +} + +/* 标签图标 */ +.icon-tag:before { + content: "🏷️"; +} + +/* 评论图标 */ +.icon-comment:before { + content: "💬"; +} + +/* 搜索图标 */ +#searchform input[type="submit"]:before { + content: "🔍"; + margin-right: 0.25em; +} + +/* 首页图标 */ +#menu-item-3498 a:before { + content: "🏠"; + margin-right: 0.25em; +} + +/* 归档图标 */ +.menu-item a[href*="archives"]:before { + content: "📚"; + margin-right: 0.25em; +} + +/* 管理站点图标 */ +.menu-item a[href*="admin"]:before { + content: "⚙️"; + margin-right: 0.25em; +} + +/* 登录/登出图标 */ +.menu-item a[href*="login"]:before { + content: "🔑"; + margin-right: 0.25em; +} + +.menu-item a[href*="logout"]:before { + content: "🚪"; + margin-right: 0.25em; +} + +/* 发布文章图标 */ +.menu-item a[href*="create"]:before { + content: "✍️"; + margin-right: 0.25em; +} + +/* 我的文章图标 */ +.menu-item a[href*="my_articles"]:before { + content: "📝"; + margin-right: 0.25em; +} + +/* 返回顶部按钮 */ +#rocket:before { + content: "⬆️"; + font-size: 1.5rem; +} + +/* 背景切换按钮 */ +.bg-toggle-btn i { + font-size: 1.5rem; +} diff --git a/src/blog/static/blog/css/modern-style.css b/src/blog/static/blog/css/modern-style.css new file mode 100644 index 0000000..294130d --- /dev/null +++ b/src/blog/static/blog/css/modern-style.css @@ -0,0 +1,968 @@ + +/* 现代化博客样式 - 保持原有布局但提升视觉效果 */ + +/* 全局样式优化 */ +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + color: #333; + line-height: 1.6; + background-color: #f8f9fa; +} + +/* 网站容器优化 */ +.site { + max-width: 1200px; + margin: 2rem auto; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); + overflow: hidden; +} + +/* 网站头部优化 */ +.site-header { + background: linear-gradient(to bottom, #fff, #f8f9fa); + padding: 1.5rem 0; + border-bottom: 1px solid #eee; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); +} + +.site-title a { + font-size: 2.2rem; + font-weight: 700; + color: #2c3e50; + text-decoration: none; + transition: color 0.3s ease; + display: inline-block; + position: relative; +} + +.site-title a::after { + content: ''; + position: absolute; + bottom: -5px; + left: 0; + width: 0; + height: 3px; + background: linear-gradient(to right, #3498db, #2980b9); + transition: width 0.3s ease; +} + +.site-title a:hover { + color: #3498db; +} + +.site-title a:hover::after { + width: 100%; +} + +.site-description { + color: #7f8c8d; + font-size: 1.1rem; + margin-top: 0.5rem; + font-style: italic; +} + +/* 导航栏优化 */ +.main-navigation { + margin-top: 1rem; + background: linear-gradient(to right, #34495e, #2c3e50); + padding: 0; + border-radius: 6px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12); + position: relative; + overflow: hidden; +} + +.main-navigation::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(to right, #3498db, #2980b9); + box-shadow: 0 2px 4px rgba(52, 152, 219, 0.3); +} + +.main-navigation::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 1px; + background: linear-gradient(to right, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)); +} + +.main-navigation ul { + display: flex; + justify-content: center; + list-style: none; + margin: 0; + padding: 0; +} + +.main-navigation li { + position: relative; + margin: 0; +} + +.main-navigation a { + color: #ecf0f1; + text-decoration: none; + font-weight: 500; + padding: 0.9rem 1.2rem; + display: block; + transition: all 0.3s ease; + position: relative; + overflow: hidden; +} + +.main-navigation a::before { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 3px; + background: linear-gradient(to right, #3498db, #2980b9); + transform: translateX(-50%); + transition: width 0.3s ease; +} + +.main-navigation a:hover::before { + width: 80%; +} + +.main-navigation a::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + background-color: rgba(255, 255, 255, 0.1); + border-radius: 50%; + transform: translate(-50%, -50%); + transition: width 0.6s ease, height 0.6s ease; +} + +.main-navigation a:hover::after { + width: 100px; + height: 100px; +} + +.main-navigation a:hover { + color: #fff; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +/* 当前活动菜单项 */ +.main-navigation .current-menu-item > a, +.main-navigation .current_page_item > a { + color: #fff; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +.main-navigation .current-menu-item > a::before, +.main-navigation .current_page_item > a::before { + width: 80%; +} + +/* 下拉菜单样式 */ +.main-navigation .sub-menu { + position: absolute; + top: 100%; + left: 0; + background: linear-gradient(to bottom, #34495e, #2c3e50); + min-width: 220px; + opacity: 0; + visibility: hidden; + transform: translateY(15px); + transition: all 0.3s ease; + z-index: 1000; + border-radius: 0 0 6px 6px; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); +} + +.main-navigation li:hover > .sub-menu { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +.main-navigation .sub-menu li { + width: 100%; + position: relative; +} + +.main-navigation .sub-menu a { + padding: 0.8rem 1.2rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); +} + +.main-navigation .sub-menu li:last-child a { + border-bottom: none; +} + +.main-navigation .sub-menu a::before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 4px; + background: linear-gradient(to bottom, #3498db, #2980b9); + transform: scaleY(0); + transition: transform 0.3s ease; +} + +.main-navigation .sub-menu a:hover::before { + transform: scaleY(1); +} + +/* 移动端菜单按钮 */ +.menu-toggle { + display: none; + background-color: #34495e; + color: #ecf0f1; + padding: 0.75rem 1rem; + border: none; + border-radius: 4px; + cursor: pointer; + font-weight: 500; + margin: 1rem auto; + transition: all 0.3s ease; + position: relative; + overflow: hidden; +} + +.menu-toggle::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.1), transparent); + transition: left 0.5s ease; +} + +.menu-toggle:hover::before { + left: 100%; +} + +.menu-toggle:hover { + background-color: #3498db; +} + +/* 主内容区域优化 */ +#main { + display: flex; + flex-wrap: wrap; + padding: 2rem; +} + +#primary { + flex: 2; + padding-right: 2rem; +} + +#secondary { + flex: 1; +} + +/* 文章卡片样式 */ +article.post { + margin-bottom: 2rem; + background: #fff; + border-radius: 8px; + overflow: hidden; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +article.post:hover { + transform: translateY(-5px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1); +} + +.entry-header { + padding: 1.5rem 1.5rem 0; +} + +/* 文章顶部元信息 */ +.article-meta-top { + display: flex; + align-items: center; + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid #eee; +} + +.author-avatar { + margin-right: 1rem; +} + +.author-avatar img { + width: 50px; + height: 50px; + border-radius: 50%; + object-fit: cover; +} + +.author-info { + flex: 1; +} + +.author-name { + font-weight: 600; + color: #2c3e50; + display: block; +} + +.post-date { + font-size: 0.9rem; + color: #7f8c8d; +} + +.post-views { + font-size: 0.9rem; + color: #7f8c8d; +} + +/* 文章标题 */ +.entry-title { + font-size: 1.5rem; + font-weight: 600; + line-height: 1.3; + margin-bottom: 1rem; +} + +.pin-indicator { + color: #e74c3c; + font-weight: 600; +} + +.entry-title a { + color: #2c3e50; + text-decoration: none; + transition: color 0.3s ease; +} + +.entry-title a:hover { + color: #3498db; +} + +/* 面包屑导航 */ +.breadcrumb { + margin-bottom: 1rem; + font-size: 0.9rem; + color: #7f8c8d; +} + +.breadcrumb a { + color: #3498db; + text-decoration: none; +} + +.breadcrumb a:hover { + text-decoration: underline; +} + +/* 文章元信息 */ +.article-meta { + display: flex; + flex-wrap: wrap; + margin-bottom: 1rem; + font-size: 0.9rem; + color: #7f8c8d; +} + +.article-meta span { + margin-right: 1rem; + margin-bottom: 0.5rem; +} + +.article-meta a { + color: #3498db; + text-decoration: none; +} + +.article-meta a:hover { + text-decoration: underline; +} + +/* 文章内容 */ +.entry-content { + padding: 0 1.5rem 1.5rem; + font-size: 1rem; + line-height: 1.7; +} + +.article-summary { + margin-bottom: 1rem; +} + +.read-more-container { + text-align: right; + margin-top: 1.5rem; +} + +.read-more { + display: inline-flex; + align-items: center; + justify-content: center; + background: linear-gradient(to right, #3498db, #2980b9); + color: #fff; + padding: 0.6rem 1.2rem; + border-radius: 30px; + text-decoration: none; + font-weight: 500; + font-size: 0.9rem; + transition: all 0.3s ease; + box-shadow: 0 2px 5px rgba(52, 152, 219, 0.3); + position: relative; + overflow: hidden; +} + +.read-more::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: left 0.6s ease; +} + +.read-more:hover::before { + left: 100%; +} + +.read-more:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(52, 152, 219, 0.4); +} + +.read-more .arrow { + margin-left: 0.5rem; + font-weight: bold; + transition: transform 0.3s ease; +} + +.read-more:hover .arrow { + transform: translateX(3px); +} + +/* 统一所有阅读更多链接的样式 */ +a[href*="/p/"], +a[href*="/article/"] { + display: inline-flex; + align-items: center; + justify-content: center; + background: linear-gradient(to right, #3498db, #2980b9); + color: #fff; + padding: 0.6rem 1.2rem; + border-radius: 30px; + text-decoration: none; + font-weight: 500; + font-size: 0.9rem; + transition: all 0.3s ease; + box-shadow: 0 2px 5px rgba(52, 152, 219, 0.3); + position: relative; + overflow: hidden; + margin: 0.5rem 0; +} + +a[href*="/p/"]::before, +a[href*="/article/"]::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: left 0.6s ease; +} + +a[href*="/p/"]:hover::before, +a[href*="/article/"]:hover::before { + left: 100%; +} + +a[href*="/p/"]:hover, +a[href*="/article/"]:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(52, 152, 219, 0.4); + color: #fff; +} + +/* 目录样式 */ +.toc-container { + background-color: #f8f9fa; + border-radius: 6px; + padding: 1rem; + margin-bottom: 1.5rem; +} + +.toc-title { + font-size: 1.1rem; + font-weight: 600; + margin-top: 0; + margin-bottom: 0.75rem; + color: #2c3e50; +} + +.toc-content ul { + padding-left: 1.5rem; + margin: 0; +} + +.toc-content li { + margin-bottom: 0.25rem; +} + +.toc-content a { + color: #34495e; + text-decoration: none; +} + +.toc-content a:hover { + color: #3498db; +} + +/* 文章内容区域 */ +.article-content { + margin-top: 1.5rem; +} + +/* 文章页脚 */ +.entry-footer { + padding: 0 1.5rem 1.5rem; + border-top: 1px solid #eee; + margin-top: 1.5rem; +} + +/* 侧边栏样式 */ +.widget-area { + padding-left: 1rem; +} + +.widget { + background: #fff; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1.5rem; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); +} + +.widget-title { + font-size: 1.1rem; + font-weight: 600; + color: #2c3e50; + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 2px solid #3498db; +} + +.widget ul { + list-style: none; + padding: 0; + margin: 0; +} + +.widget li { + padding: 0.5rem 0; + border-bottom: 1px solid #eee; +} + +.widget li:last-child { + border-bottom: none; +} + +.widget a { + color: #34495e; + text-decoration: none; + transition: color 0.3s ease; +} + +.widget a:hover { + color: #3498db; +} + +/* 搜索框样式 */ +#searchform { + display: flex; +} + +#searchform input[type="text"] { + flex: 1; + padding: 0.75rem; + border: 1px solid #ddd; + border-radius: 4px 0 0 4px; + font-size: 0.9rem; +} + +#searchform input[type="submit"] { + background-color: #3498db; + color: #fff; + border: none; + padding: 0 1rem; + border-radius: 0 4px 4px 0; + cursor: pointer; + transition: background-color 0.3s ease; +} + +#searchform input[type="submit"]:hover { + background-color: #2980b9; +} + +/* 标签云样式 */ +.tagcloud a { + display: inline-block; + margin: 0.25rem; + padding: 0.25rem 0.5rem; + background-color: #f1f2f6; + color: #34495e; + border-radius: 4px; + text-decoration: none; + transition: all 0.3s ease; +} + +.tagcloud a:hover { + background-color: #3498db; + color: #fff; +} + +/* 评论区域样式 */ +.comments-area { + margin-top: 2rem; + padding: 1.5rem; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); +} + +.comment-list { + padding: 0; + list-style: none; +} + +.comment { + margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid #eee; +} + +.comment:last-child { + border-bottom: none; +} + +.comment-author { + font-weight: 600; + color: #2c3e50; +} + +.comment-meta { + font-size: 0.8rem; + color: #7f8c8d; + margin-bottom: 0.5rem; +} + +/* 页脚样式 */ +footer[role="contentinfo"] { + background-color: #34495e; + color: #ecf0f1; + padding: 2rem; + text-align: center; + margin-top: 2rem; +} + +footer[role="contentinfo"] a { + color: #3498db; + text-decoration: none; + transition: color 0.3s ease; +} + +footer[role="contentinfo"] a:hover { + color: #5dade2; +} + +/* 归档页面样式 */ +.archive-header { + text-align: center; + margin-bottom: 2rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.archive-title { + font-size: 2rem; + font-weight: 600; + color: #2c3e50; + margin-bottom: 0.5rem; +} + +.archive-title .icon-folder { + margin-right: 0.5rem; +} + +.archive-description { + font-size: 1rem; + color: #7f8c8d; +} + +.archive-content { + padding: 1rem 0; +} + +/* 时间轴样式 */ +.timeline-container { + position: relative; + padding: 1rem 0; +} + +.timeline-container::before { + content: ''; + position: absolute; + left: 30px; + top: 0; + bottom: 0; + width: 3px; + background: linear-gradient(to bottom, #3498db, #2980b9); + border-radius: 3px; +} + +.timeline-year { + margin-bottom: 2rem; +} + +.year-title { + position: relative; + display: flex; + align-items: center; + margin-bottom: 1.5rem; + padding-left: 60px; +} + +.year-badge { + position: absolute; + left: 0; + display: flex; + align-items: center; + justify-content: center; + width: 60px; + height: 60px; + background-color: #3498db; + color: #fff; + font-size: 1.2rem; + font-weight: 600; + border-radius: 50%; + box-shadow: 0 3px 10px rgba(52, 152, 219, 0.3); + z-index: 1; +} + +.year-text { + font-size: 1.5rem; + font-weight: 600; + color: #2c3e50; + margin-right: 0.5rem; +} + +.article-count { + font-size: 0.9rem; + color: #7f8c8d; + background-color: #f8f9fa; + padding: 0.2rem 0.5rem; + border-radius: 12px; +} + +.timeline-months { + padding-left: 60px; +} + +.timeline-month { + margin-bottom: 1.5rem; +} + +.month-title { + position: relative; + display: flex; + align-items: center; + margin-bottom: 1rem; +} + +.month-badge { + position: absolute; + left: -45px; + display: flex; + align-items: center; + justify-content: center; + width: 30px; + height: 30px; + background-color: #2ecc71; + color: #fff; + font-size: 0.9rem; + font-weight: 600; + border-radius: 50%; + box-shadow: 0 2px 6px rgba(46, 204, 113, 0.3); + z-index: 1; +} + +.month-text { + font-size: 1.1rem; + font-weight: 600; + color: #2c3e50; + margin-right: 0.5rem; +} + +.timeline-articles { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1rem; +} + +.archive-article { + display: flex; + background: #fff; + border-radius: 8px; + padding: 1rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.archive-article:hover { + transform: translateY(-5px); + box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1); +} + +.article-date { + margin-right: 1rem; +} + +.day { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + background-color: #f1f2f6; + color: #2c3e50; + font-size: 1.1rem; + font-weight: 600; + border-radius: 50%; +} + +.article-content { + flex: 1; +} + +.article-title { + margin: 0 0 0.5rem; + font-size: 1rem; + font-weight: 600; +} + +.article-title a { + color: #2c3e50; + text-decoration: none; + transition: color 0.3s ease; +} + +.article-title a:hover { + color: #3498db; +} + +.article-meta { + display: flex; + font-size: 0.8rem; + color: #7f8c8d; +} + +.article-meta .category { + margin-right: 1rem; +} + +.article-meta a { + color: #3498db; + text-decoration: none; +} + +.article-meta a:hover { + text-decoration: underline; +} + +/* 返回顶部按钮 */ +#rocket { + position: fixed; + bottom: 2rem; + right: 2rem; + width: 3rem; + height: 3rem; + background-color: #3498db; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + cursor: pointer; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + transition: all 0.3s ease; + opacity: 0; + visibility: hidden; +} + +#rocket.show { + opacity: 1; + visibility: visible; +} + +#rocket:hover { + background-color: #2980b9; + transform: translateY(-5px); +} + +#rocket::before { + content: "↑"; + font-size: 1.5rem; +} + +/* 响应式设计 */ +@media screen and (max-width: 992px) { + #main { + flex-direction: column; + } + + #primary { + padding-right: 0; + margin-bottom: 2rem; + } + + .widget-area { + padding-left: 0; + } +} + +@media screen and (max-width: 768px) { + .site { + margin: 0; + border-radius: 0; + box-shadow: none; + } + + .main-navigation ul { + flex-wrap: wrap; + } + + .main-navigation li { + margin: 0.25rem; + } + + #primary, #secondary { + padding: 0 1rem; + } +} diff --git a/src/blog/static/blog/img/default_bg.jpg b/src/blog/static/blog/img/default_bg.jpg new file mode 100644 index 0000000..9641824 Binary files /dev/null and b/src/blog/static/blog/img/default_bg.jpg differ diff --git a/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc b/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc index 840bb6f..95ab24e 100644 Binary files a/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc b/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc index f64ce87..ba768c1 100644 Binary files a/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc and b/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc differ diff --git a/src/comments/__pycache__/__init__.cpython-311.pyc b/src/comments/__pycache__/__init__.cpython-311.pyc index bf56a9a..b058946 100644 Binary files a/src/comments/__pycache__/__init__.cpython-311.pyc and b/src/comments/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/__pycache__/admin.cpython-311.pyc b/src/comments/__pycache__/admin.cpython-311.pyc index 2f1f1cd..87541cf 100644 Binary files a/src/comments/__pycache__/admin.cpython-311.pyc and b/src/comments/__pycache__/admin.cpython-311.pyc differ diff --git a/src/comments/__pycache__/apps.cpython-311.pyc b/src/comments/__pycache__/apps.cpython-311.pyc index 61372ec..f9030d8 100644 Binary files a/src/comments/__pycache__/apps.cpython-311.pyc and b/src/comments/__pycache__/apps.cpython-311.pyc differ diff --git a/src/comments/__pycache__/forms.cpython-311.pyc b/src/comments/__pycache__/forms.cpython-311.pyc index 683aa6f..89dcc65 100644 Binary files a/src/comments/__pycache__/forms.cpython-311.pyc and b/src/comments/__pycache__/forms.cpython-311.pyc differ diff --git a/src/comments/__pycache__/models.cpython-311.pyc b/src/comments/__pycache__/models.cpython-311.pyc index b0a36eb..bae4094 100644 Binary files a/src/comments/__pycache__/models.cpython-311.pyc and b/src/comments/__pycache__/models.cpython-311.pyc differ diff --git a/src/comments/__pycache__/urls.cpython-311.pyc b/src/comments/__pycache__/urls.cpython-311.pyc index 680c823..1076ba4 100644 Binary files a/src/comments/__pycache__/urls.cpython-311.pyc and b/src/comments/__pycache__/urls.cpython-311.pyc differ diff --git a/src/comments/__pycache__/utils.cpython-311.pyc b/src/comments/__pycache__/utils.cpython-311.pyc index 302fcba..8b1eace 100644 Binary files a/src/comments/__pycache__/utils.cpython-311.pyc and b/src/comments/__pycache__/utils.cpython-311.pyc differ diff --git a/src/comments/__pycache__/views.cpython-311.pyc b/src/comments/__pycache__/views.cpython-311.pyc index 41da316..20eef6e 100644 Binary files a/src/comments/__pycache__/views.cpython-311.pyc and b/src/comments/__pycache__/views.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc index e2eed5a..28aef57 100644 Binary files a/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc b/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc index f3d16b3..01a9190 100644 Binary files a/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc and b/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc b/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc index 66f9ab0..81b6c8e 100644 Binary files a/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc and b/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/__init__.cpython-311.pyc b/src/comments/migrations/__pycache__/__init__.cpython-311.pyc index 1bf0fe2..2d07d3d 100644 Binary files a/src/comments/migrations/__pycache__/__init__.cpython-311.pyc and b/src/comments/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc b/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc index de4a888..cfd46fd 100644 Binary files a/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc b/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc index e44628d..8783650 100644 Binary files a/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc and b/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/__init__.cpython-311.pyc b/src/djangoblog/__pycache__/__init__.cpython-311.pyc index f49053a..44b7a7f 100644 Binary files a/src/djangoblog/__pycache__/__init__.cpython-311.pyc and b/src/djangoblog/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/admin_site.cpython-311.pyc b/src/djangoblog/__pycache__/admin_site.cpython-311.pyc index ca8f271..1a7ebe0 100644 Binary files a/src/djangoblog/__pycache__/admin_site.cpython-311.pyc and b/src/djangoblog/__pycache__/admin_site.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/apps.cpython-311.pyc b/src/djangoblog/__pycache__/apps.cpython-311.pyc index 630bbd8..75b03ed 100644 Binary files a/src/djangoblog/__pycache__/apps.cpython-311.pyc and b/src/djangoblog/__pycache__/apps.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc b/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc index 583a302..e0bcc60 100644 Binary files a/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc and b/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc b/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc index 1cde566..2850241 100644 Binary files a/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc and b/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/feeds.cpython-311.pyc b/src/djangoblog/__pycache__/feeds.cpython-311.pyc index 5aede73..90b5d86 100644 Binary files a/src/djangoblog/__pycache__/feeds.cpython-311.pyc and b/src/djangoblog/__pycache__/feeds.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc b/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc index ba9a9a0..3b97a73 100644 Binary files a/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc and b/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/settings.cpython-311.pyc b/src/djangoblog/__pycache__/settings.cpython-311.pyc index 2a64a33..c272f6f 100644 Binary files a/src/djangoblog/__pycache__/settings.cpython-311.pyc and b/src/djangoblog/__pycache__/settings.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/sitemap.cpython-311.pyc b/src/djangoblog/__pycache__/sitemap.cpython-311.pyc index 420f8ac..05f5412 100644 Binary files a/src/djangoblog/__pycache__/sitemap.cpython-311.pyc and b/src/djangoblog/__pycache__/sitemap.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc b/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc index 8ce5440..a4353af 100644 Binary files a/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc and b/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/urls.cpython-311.pyc b/src/djangoblog/__pycache__/urls.cpython-311.pyc index 375a6c8..331a814 100644 Binary files a/src/djangoblog/__pycache__/urls.cpython-311.pyc and b/src/djangoblog/__pycache__/urls.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/utils.cpython-311.pyc b/src/djangoblog/__pycache__/utils.cpython-311.pyc index c6edec4..e392e12 100644 Binary files a/src/djangoblog/__pycache__/utils.cpython-311.pyc and b/src/djangoblog/__pycache__/utils.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc b/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc index 8f18831..9c4bd83 100644 Binary files a/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc and b/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/wsgi.cpython-311.pyc b/src/djangoblog/__pycache__/wsgi.cpython-311.pyc index 9857866..0f73d0a 100644 Binary files a/src/djangoblog/__pycache__/wsgi.cpython-311.pyc and b/src/djangoblog/__pycache__/wsgi.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc index 1e6aec5..aa10186 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc index b472ee4..4560e1a 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc index f84ce97..f8ed032 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc index 518218a..575f82a 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc differ diff --git a/src/logs/djangoblog.log b/src/logs/djangoblog.log index a0731be..7726c65 100644 --- a/src/logs/djangoblog.log +++ b/src/logs/djangoblog.log @@ -2083,3 +2083,1221 @@ [2025-11-20 22:40:56,571] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 [2025-11-20 22:40:56,719] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar [2025-11-20 22:40:57,051] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-22 23:24:14,159] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:14,159] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:14,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:14,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:14,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:14,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:14,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:14,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:14,219] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:14,219] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:14,220] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:14,220] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:20,151] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:20,151] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:20,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:20,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:20,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:20,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:20,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:20,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:20,330] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:24:35,091] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:24:35,129] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:24:35,174] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:24:35,174] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:24:36,829] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:24:37,149] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:24:48,921] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:archives +[2025-11-22 23:25:36,329] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:25:56,432] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-22 23:25:56,600] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:25:56,602] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:25:57,154] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:25:57,154] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:25:57,315] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:25:57,486] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-22 23:26:55,112] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:31:57,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:31:57,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:31:57,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:31:57,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:31:57,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:31:57,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:31:57,285] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:31:57,285] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:31:57,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:31:57,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:31:57,309] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:31:57,309] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:32:02,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:32:02,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:32:02,636] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:32:02,636] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:32:02,644] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:32:02,644] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:32:02,645] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:32:02,645] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:32:02,648] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:32:02,648] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:32:02,649] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:32:02,649] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:32:02,779] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:32:27,021] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:32:27,032] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:32:27,083] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:32:27,083] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:32:27,408] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:32:28,047] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:32:28,739] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:32:29,066] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:33:23,930] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-22 23:33:24,301] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:33:24,567] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-22 23:33:26,160] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-22 23:33:29,680] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-22 23:33:31,989] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_C_1 +[2025-11-22 23:33:33,693] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:33:34,945] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:37:43,585] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:43,585] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:43,586] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:43,586] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:43,599] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:43,599] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:43,600] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:43,600] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:48,852] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:48,852] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:48,853] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:48,853] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:48,867] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:48,867] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:48,868] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:48,868] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:48,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:48,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:48,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:48,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:48,875] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:48,875] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:48,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:48,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:48,995] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:38:10,383] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:38:10,396] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:38:10,434] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:38:10,434] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:38:10,759] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:38:11,321] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:38:11,954] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:38:12,275] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:38:32,039] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-22 23:38:32,595] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:38:32,795] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-22 23:38:37,701] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:38:39,029] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-22 23:38:40,252] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 +[2025-11-22 23:38:45,949] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-22 23:38:48,738] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C++_1 +[2025-11-22 23:38:50,004] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Python_1 +[2025-11-22 23:38:51,453] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:38:53,129] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:38:56,238] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-22 23:38:56,381] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:38:56,382] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:38:56,382] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:38:56,382] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:38:56,383] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:38:56,383] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:38:56,969] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:38:56,969] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:38:57,151] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:38:57,343] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-22 23:39:08,035] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:40:26,367] INFO [blog.models.comment_list:151 models] set article comments:1 +[2025-11-22 23:40:26,530] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:40:26,530] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=9, 标题='2', 长度=1 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=10, 标题='3', 长度=1 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:40:27,149] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:40:27,149] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=9, 标题='2', 长度=1 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=10, 标题='3', 长度=1 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:40:43,855] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:40:45,396] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Python_1 +[2025-11-22 23:40:46,966] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_C_1 +[2025-11-22 23:40:53,083] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:40:54,270] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:44:18,804] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:18,804] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:18,805] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:18,805] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:18,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:18,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:18,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:18,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:18,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:18,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:18,831] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:18,831] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:24,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:24,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:24,045] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:24,045] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:24,061] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:24,061] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:24,062] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:24,062] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:24,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:24,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:24,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:24,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:24,184] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:45:27,770] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:45:27,791] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:45:27,892] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:45:27,892] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:45:28,532] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:45:29,273] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:45:30,043] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:45:30,386] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:54:19,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:19,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:19,957] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:19,957] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:19,969] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:19,969] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:19,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:19,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:19,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:19,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:19,975] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:19,975] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:19,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:19,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:19,980] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:19,980] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:26,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:26,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:26,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:26,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:26,376] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:26,376] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:26,377] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:26,377] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:26,385] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:26,385] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:26,386] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:26,386] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:26,394] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:26,394] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:26,395] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:26,395] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:26,399] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:26,399] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:26,400] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:26,400] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:26,532] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:54:33,079] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:54:33,103] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:54:33,148] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:54:33,148] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:54:33,678] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:54:34,487] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:54:35,271] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:54:35,651] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:59:18,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:18,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:18,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:18,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:18,303] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:18,303] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:18,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:18,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:23,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:23,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:23,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:23,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:23,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:23,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:23,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:23,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:23,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:23,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:23,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:23,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:23,647] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:23,647] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:23,648] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:23,648] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:23,769] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:59:27,786] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:59:27,803] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:59:27,856] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:59:27,856] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:59:28,302] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:59:29,043] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:59:29,770] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:59:30,317] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 00:00:02,095] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-23 00:00:02,507] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 00:00:02,704] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-23 00:00:03,902] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 +[2025-11-23 00:00:05,464] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-23 00:00:06,872] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C++_1 +[2025-11-23 00:00:10,314] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:01:02,859] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:01:34,356] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:01:48,579] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:02:55,511] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:03:09,993] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-23 00:03:14,376] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:03:25,938] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:03:46,080] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:04:22,161] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:04:27,763] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:04:55,624] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\forms.py changed, reloading. +[2025-11-23 00:05:01,011] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:05:01,011] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:05:01,012] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:05:01,012] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:05:01,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:05:01,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:05:01,026] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:05:01,026] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:05:01,163] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:06:34,502] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\templatetags\blog_tags.py changed, reloading. +[2025-11-23 00:06:39,869] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:06:39,869] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:06:39,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:06:39,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:06:39,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:06:39,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:06:39,875] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:06:39,875] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:06:39,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:06:39,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:06:39,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:06:39,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:06:39,892] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:06:39,892] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:06:39,893] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:06:39,893] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:06:39,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:06:39,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:06:39,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:06:39,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:06:40,017] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:07:17,033] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:17,033] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:17,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:17,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:17,038] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:17,038] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:17,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:17,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:17,042] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:17,042] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:17,043] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:17,043] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:17,060] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:17,060] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:17,061] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:17,061] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:22,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:22,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:22,266] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:22,266] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:22,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:22,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:22,271] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:22,271] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:22,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:22,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:22,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:22,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:22,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:22,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:22,280] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:22,280] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:22,408] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:08:35,980] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:35,980] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:35,981] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:35,981] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:35,989] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:35,989] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:35,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:35,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:36,002] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:36,002] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:36,003] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:36,003] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:36,007] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:36,007] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:36,008] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:36,008] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:41,461] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:41,461] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:41,462] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:41,462] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:41,466] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:41,466] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:41,467] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:41,467] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:41,474] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:41,474] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:41,475] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:41,475] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:41,480] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:41,480] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:41,481] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:41,481] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:41,600] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:09:02,955] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\forms.py changed, reloading. +[2025-11-23 00:09:08,511] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:08,511] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:08,512] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:08,512] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:08,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:08,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:08,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:08,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:08,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:08,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:08,522] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:08,522] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:08,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:08,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:08,526] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:08,526] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:08,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:08,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:08,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:08,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:08,682] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:09:26,960] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:26,960] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:26,961] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:26,961] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:26,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:26,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:26,966] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:26,966] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:26,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:26,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:26,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:26,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:43,079] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:43,079] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:43,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:43,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:43,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:43,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:43,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:43,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:43,099] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:43,099] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:43,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:43,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:43,103] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:43,103] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:43,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:43,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:29,261] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:29,261] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:29,262] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:29,262] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:29,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:29,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:29,267] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:29,267] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:29,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:29,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:29,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:29,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:29,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:29,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:29,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:29,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:29,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:29,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:29,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:29,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:34,624] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:34,624] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:34,625] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:34,625] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:34,642] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:34,642] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:34,643] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:34,643] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:34,650] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:34,650] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:34,651] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:34,651] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:34,768] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:10:41,557] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 00:10:41,570] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 00:12:30,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:30,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:30,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:30,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:30,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:30,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:30,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:30,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:36,436] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-23 00:12:42,064] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:42,064] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:42,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:42,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:42,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:42,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:42,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:42,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:42,078] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:42,078] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:42,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:42,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:42,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:42,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:42,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:42,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:42,215] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:13:26,167] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:26,167] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:26,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:26,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:26,173] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:26,173] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:26,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:26,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:26,178] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:26,178] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:26,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:26,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:26,183] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:26,183] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:26,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:26,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:26,187] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:26,187] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:26,188] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:26,188] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:26,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:26,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:26,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:26,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:31,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:31,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:31,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:31,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:31,928] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:31,928] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:31,929] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:31,929] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:31,933] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:31,933] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:31,934] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:31,934] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:31,943] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:31,943] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:31,944] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:31,944] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:32,075] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:14:38,671] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:38,671] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:38,672] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:38,672] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:38,676] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:38,676] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:38,677] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:38,677] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:38,689] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:38,689] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:38,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:38,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:38,693] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:38,693] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:38,694] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:38,694] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:44,129] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:44,129] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:44,130] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:44,130] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:44,142] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:44,142] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:44,143] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:44,143] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:44,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:44,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:44,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:44,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:44,274] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:17:12,065] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-23 00:17:17,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:17:17,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:17:17,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:17:17,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:17:17,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:17:17,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:17:17,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:17:17,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:17:17,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:17:17,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:17:17,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:17:17,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:17:17,686] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:18:17,826] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\templatetags\blog_tags.py changed, reloading. +[2025-11-23 00:18:23,185] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:18:23,185] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:18:23,186] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:18:23,186] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:18:23,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:18:23,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:18:23,192] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:18:23,192] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:18:23,195] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:18:23,195] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:18:23,196] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:18:23,196] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:18:23,337] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:20:26,745] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:26,745] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:26,746] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:26,746] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:26,751] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:26,751] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:26,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:26,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:26,757] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:26,757] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:26,758] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:26,758] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:26,764] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:26,764] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:26,765] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:26,765] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:33,820] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:33,820] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:33,821] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:33,821] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:33,825] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:33,825] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:33,826] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:33,826] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:33,834] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:33,834] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:33,835] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:33,835] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:33,838] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:33,838] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:33,840] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:33,840] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:33,970] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:20:39,729] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 00:20:39,752] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 00:20:39,880] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 00:20:39,880] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 00:20:40,421] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-23 00:20:41,168] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-23 00:20:41,973] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 00:20:42,360] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 00:22:31,390] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:22:53,917] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:25:50,846] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:28:21,321] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:28:44,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:44,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:44,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:44,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:44,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:44,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:44,565] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:44,565] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:50,917] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:50,917] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:50,918] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:50,918] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:50,923] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:50,923] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:50,924] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:50,924] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:50,929] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:50,929] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:50,930] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:50,930] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:50,935] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:50,935] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:50,936] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:50,936] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:51,094] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:29:33,353] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:32:39,022] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:35:43,280] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:40:18,404] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:43:11,268] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:44:32,357] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:48:11,797] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:51:04,680] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\forms.py changed, reloading. +[2025-11-23 00:51:12,911] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:51:12,911] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:51:12,912] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:51:12,912] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:51:12,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:51:12,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:51:12,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:51:12,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:51:12,936] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:51:12,936] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:51:12,937] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:51:12,937] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:51:12,964] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:51:12,964] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:51:12,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:51:12,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:51:12,977] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:51:12,977] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:51:12,978] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:51:12,978] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:51:13,171] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader diff --git a/src/media/backgrounds/test_bg.jpg b/src/media/backgrounds/test_bg.jpg new file mode 100644 index 0000000..98c8115 --- /dev/null +++ b/src/media/backgrounds/test_bg.jpg @@ -0,0 +1,2 @@ + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChAI9jU77yQAAAABJRU5ErkJggg== diff --git a/src/oauth/__pycache__/admin.cpython-311.pyc b/src/oauth/__pycache__/admin.cpython-311.pyc index 29470e5..f7fb367 100644 Binary files a/src/oauth/__pycache__/admin.cpython-311.pyc and b/src/oauth/__pycache__/admin.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/forms.cpython-311.pyc b/src/oauth/__pycache__/forms.cpython-311.pyc index 4f52ff4..303e0f7 100644 Binary files a/src/oauth/__pycache__/forms.cpython-311.pyc and b/src/oauth/__pycache__/forms.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/models.cpython-311.pyc b/src/oauth/__pycache__/models.cpython-311.pyc index 2c28eb8..6d28977 100644 Binary files a/src/oauth/__pycache__/models.cpython-311.pyc and b/src/oauth/__pycache__/models.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/oauthmanager.cpython-311.pyc b/src/oauth/__pycache__/oauthmanager.cpython-311.pyc index bc58e28..0255c61 100644 Binary files a/src/oauth/__pycache__/oauthmanager.cpython-311.pyc and b/src/oauth/__pycache__/oauthmanager.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/urls.cpython-311.pyc b/src/oauth/__pycache__/urls.cpython-311.pyc index 43e6c94..b827808 100644 Binary files a/src/oauth/__pycache__/urls.cpython-311.pyc and b/src/oauth/__pycache__/urls.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/views.cpython-311.pyc b/src/oauth/__pycache__/views.cpython-311.pyc index de55f3a..d20d61c 100644 Binary files a/src/oauth/__pycache__/views.cpython-311.pyc and b/src/oauth/__pycache__/views.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc index 6910b6c..903daf0 100644 Binary files a/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc b/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc index f05d706..02df183 100644 Binary files a/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc b/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc index c9763f0..0d15795 100644 Binary files a/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc b/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc index dfc6228..d097840 100644 Binary files a/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc and b/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc b/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc index 100233a..40dce3e 100644 Binary files a/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc b/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc index 2876058..9508046 100644 Binary files a/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc and b/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/admin.cpython-311.pyc b/src/owntracks/__pycache__/admin.cpython-311.pyc index c959ad8..b68916c 100644 Binary files a/src/owntracks/__pycache__/admin.cpython-311.pyc and b/src/owntracks/__pycache__/admin.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/models.cpython-311.pyc b/src/owntracks/__pycache__/models.cpython-311.pyc index 469d0a1..6c011c9 100644 Binary files a/src/owntracks/__pycache__/models.cpython-311.pyc and b/src/owntracks/__pycache__/models.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/urls.cpython-311.pyc b/src/owntracks/__pycache__/urls.cpython-311.pyc index e98501e..239a1df 100644 Binary files a/src/owntracks/__pycache__/urls.cpython-311.pyc and b/src/owntracks/__pycache__/urls.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/views.cpython-311.pyc b/src/owntracks/__pycache__/views.cpython-311.pyc index f5f09cf..91586f2 100644 Binary files a/src/owntracks/__pycache__/views.cpython-311.pyc and b/src/owntracks/__pycache__/views.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc index c9a8adc..8a5a590 100644 Binary files a/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc b/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc index 648f0da..d5ce14b 100644 Binary files a/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc b/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc index 48f58ed..a542b26 100644 Binary files a/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/__pycache__/__init__.cpython-311.pyc b/src/plugins/__pycache__/__init__.cpython-311.pyc index 70fde45..165e0b0 100644 Binary files a/src/plugins/__pycache__/__init__.cpython-311.pyc and b/src/plugins/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc b/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc index a0ed6db..0813c73 100644 Binary files a/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc and b/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc b/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc index d00d5e4..e21b016 100644 Binary files a/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc and b/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc b/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc index 1509570..87cce27 100644 Binary files a/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc and b/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc b/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc index d69ec02..d37e8d1 100644 Binary files a/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc and b/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc b/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc index 2bcb92a..6e01268 100644 Binary files a/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc and b/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc b/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc index f3b0e85..ced530f 100644 Binary files a/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc and b/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc b/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc index a006310..dc71326 100644 Binary files a/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc and b/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc b/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc index d866161..b56c308 100644 Binary files a/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc and b/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc b/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc index a9a36e3..29ff3f4 100644 Binary files a/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc and b/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc b/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc index 72c39f7..df0d2f8 100644 Binary files a/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc and b/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc b/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc index 46c3305..8b3d989 100644 Binary files a/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc and b/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc b/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc index 5ad6c92..48340e8 100644 Binary files a/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc and b/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc b/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc index 3f40557..64819ee 100644 Binary files a/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc and b/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc b/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc index d914aac..6a0477b 100644 Binary files a/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc and b/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc b/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc index a563534..8d1aaf3 100644 Binary files a/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc and b/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/admin.cpython-311.pyc b/src/servermanager/__pycache__/admin.cpython-311.pyc index 8b3f39b..ba6ba73 100644 Binary files a/src/servermanager/__pycache__/admin.cpython-311.pyc and b/src/servermanager/__pycache__/admin.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/models.cpython-311.pyc b/src/servermanager/__pycache__/models.cpython-311.pyc index 29581c7..d90545f 100644 Binary files a/src/servermanager/__pycache__/models.cpython-311.pyc and b/src/servermanager/__pycache__/models.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/robot.cpython-311.pyc b/src/servermanager/__pycache__/robot.cpython-311.pyc index bce7796..8de4652 100644 Binary files a/src/servermanager/__pycache__/robot.cpython-311.pyc and b/src/servermanager/__pycache__/robot.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/urls.cpython-311.pyc b/src/servermanager/__pycache__/urls.cpython-311.pyc index f6fb85b..1c54dbc 100644 Binary files a/src/servermanager/__pycache__/urls.cpython-311.pyc and b/src/servermanager/__pycache__/urls.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/__init__.cpython-311.pyc b/src/servermanager/api/__pycache__/__init__.cpython-311.pyc index 9c8d179..a3bfe2e 100644 Binary files a/src/servermanager/api/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/api/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc b/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc index 4d61952..87a971b 100644 Binary files a/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc and b/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc b/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc index 54d0ad5..56ce4ee 100644 Binary files a/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc and b/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc index 43518fd..416dbf5 100644 Binary files a/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc b/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc index 1a0b017..b95a5f6 100644 Binary files a/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc b/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc index 0e11c14..3bade41 100644 Binary files a/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/templates/blog/background_selector.html b/src/templates/blog/background_selector.html new file mode 100644 index 0000000..0b33c33 --- /dev/null +++ b/src/templates/blog/background_selector.html @@ -0,0 +1,257 @@ + +{% load static %} + +
+ +
+ + +
+
+
选择背景图片
+
+ +
+
+
+ + +
+
+ + + +