pull/1/head
lxl 5 months ago
parent fdb38b89c7
commit 34bf61d4d9

@ -5,34 +5,39 @@ from django.urls import reverse
from django.utils.html import format_html
from django.utils.translation import gettext_lazy as _
# 注册你的模型到admin后台
# Register your models here.
from .models import Article
class ArticleForm(forms.ModelForm):
# body = forms.CharField(widget=AdminPagedownWidget())
# 文章表单类可在这里自定义文章模型对应的表单字段等当前示例中暂时没有额外自定义字段原body字段的AdminPagedownWidget注释掉了
class Meta:
model = Article
fields = '__all__'
model = Article # 关联的模型是Article
fields = '__all__' # 表单包含模型的所有字段
# 定义将选中文章发布的动作函数
def makr_article_publish(modeladmin, request, queryset):
queryset.update(status='p')
queryset.update(status='p') # 将选中文章的状态更新为'p'(发布状态)
# 定义将选中文章设为草稿的动作函数
def draft_article(modeladmin, request, queryset):
queryset.update(status='d')
queryset.update(status='d') # 将选中文章的状态更新为'd'(草稿状态)
# 定义关闭文章评论的动作函数
def close_article_commentstatus(modeladmin, request, queryset):
queryset.update(comment_status='c')
queryset.update(comment_status='c') # 将选中文章的评论状态更新为'c'(关闭状态)
# 定义开启文章评论的动作函数
def open_article_commentstatus(modeladmin, request, queryset):
queryset.update(comment_status='o')
queryset.update(comment_status='o') # 将选中文章的评论状态更新为'o'(开启状态)
# 为各个动作函数设置在admin界面显示的简短描述
makr_article_publish.short_description = _('Publish selected articles')
draft_article.short_description = _('Draft selected articles')
close_article_commentstatus.short_description = _('Close article comments')
@ -40,46 +45,54 @@ open_article_commentstatus.short_description = _('Open article comments')
class ArticlelAdmin(admin.ModelAdmin):
list_per_page = 20
search_fields = ('body', 'title')
form = ArticleForm
list_per_page = 20 # 管理员列表页每页显示20条记录
search_fields = ('body', 'title') # 可搜索的字段,按文章内容和标题搜索
form = ArticleForm # 使用自定义的ArticleForm作为表单
# 列表页显示的字段
list_display = (
'id',
'title',
'author',
'link_to_category',
'link_to_category', # 自定义的显示分类链接的字段
'creation_time',
'views',
'status',
'type',
'article_order')
list_display_links = ('id', 'title')
list_filter = ('status', 'type', 'category')
filter_horizontal = ('tags',)
exclude = ('creation_time', 'last_modify_time')
view_on_site = True
list_display_links = ('id', 'title') # 列表页中可点击跳转详情的字段
list_filter = ('status', 'type', 'category') # 可用于筛选的字段
filter_horizontal = ('tags',) # 水平过滤选择的字段(用于多对多关系,如文章和标签)
exclude = ('creation_time', 'last_modify_time') # 编辑页排除的字段(不显示这两个时间字段)
view_on_site = True # 开启在站点查看文章的功能
actions = [
# 配置admin界面的动作选项即上面定义的几个动作函数
makr_article_publish,
draft_article,
close_article_commentstatus,
open_article_commentstatus]
# 自定义显示分类为可点击链接的方法
def link_to_category(self, obj):
# 获取分类模型的app_label和model_name用于生成admin后台分类编辑页面的链接
info = (obj.category._meta.app_label, obj.category._meta.model_name)
link = reverse('admin:%s_%s_change' % info, args=(obj.category.id,))
# 格式化生成带链接的分类名称
return format_html(u'<a href="%s">%s</a>' % (link, obj.category.name))
link_to_category.short_description = _('category')
link_to_category.short_description = _('category') # 该自定义字段在列表页的显示名称
# 重写获取表单的方法,用于自定义作者字段的查询集
def get_form(self, request, obj=None, **kwargs):
form = super(ArticlelAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['author'].queryset = get_user_model(
).objects.filter(is_superuser=True)
# 作者字段只显示超级用户
form.base_fields['author'].queryset = get_user_model().objects.filter(is_superuser=True)
return form
# 重写保存模型的方法,可在这里添加自定义的保存逻辑,当前示例中调用父类方法进行默认保存
def save_model(self, request, obj, form, change):
super(ArticlelAdmin, self).save_model(request, obj, form, change)
# 重写获取站点查看链接的方法返回文章在站点的完整URL
def get_view_on_site_url(self, obj=None):
if obj:
url = obj.get_full_url()
@ -91,22 +104,22 @@ class ArticlelAdmin(admin.ModelAdmin):
class TagAdmin(admin.ModelAdmin):
exclude = ('slug', 'last_mod_time', 'creation_time')
exclude = ('slug', 'last_mod_time', 'creation_time') # 标签编辑页排除的字段
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'parent_category', 'index')
exclude = ('slug', 'last_mod_time', 'creation_time')
list_display = ('name', 'parent_category', 'index') # 分类列表页显示的字段
exclude = ('slug', 'last_mod_time', 'creation_time') # 分类编辑页排除的字段
class LinksAdmin(admin.ModelAdmin):
exclude = ('last_mod_time', 'creation_time')
exclude = ('last_mod_time', 'creation_time') # 链接编辑页排除的字段
class SideBarAdmin(admin.ModelAdmin):
list_display = ('name', 'content', 'is_enable', 'sequence')
exclude = ('last_mod_time', 'creation_time')
list_display = ('name', 'content', 'is_enable', 'sequence') # 侧边栏列表页显示的字段
exclude = ('last_mod_time', 'creation_time') # 侧边栏编辑页排除的字段
class BlogSettingsAdmin(admin.ModelAdmin):
pass
pass # 博客设置的admin类暂时没有额外配置

@ -20,21 +20,26 @@ from djangoblog.utils import get_current_site
from oauth.models import OAuthUser
from djangoblog.plugin_manage import hooks
# 获取当前模块的日志记录器
logger = logging.getLogger(__name__)
# 注册模板标签库用于在Django模板中使用自定义标签和过滤器
register = template.Library()
@register.simple_tag(takes_context=True)
def head_meta(context):
# 应用过滤器到'head_meta'并标记为安全的HTML内容返回
return mark_safe(hooks.apply_filters('head_meta', '', context))
@register.simple_tag
def timeformat(data):
try:
# 按照设置的时间格式格式化日期时间数据
return data.strftime(settings.TIME_FORMAT)
except Exception as e:
# 捕获异常并记录错误日志
logger.error(e)
return ""
@ -42,6 +47,7 @@ def timeformat(data):
@register.simple_tag
def datetimeformat(data):
try:
# 按照设置的日期时间格式格式化数据
return data.strftime(settings.DATE_TIME_FORMAT)
except Exception as e:
logger.error(e)
@ -51,12 +57,14 @@ def datetimeformat(data):
@register.filter()
@stringfilter
def custom_markdown(content):
# 将内容用自定义的Markdown解析器转换为HTML并标记为安全
return mark_safe(CommonMarkdown.get_markdown(content))
@register.simple_tag
def get_markdown_toc(content):
from djangoblog.utils import CommonMarkdown
# 获取Markdown内容的目录
body, toc = CommonMarkdown.get_markdown_with_toc(content)
return mark_safe(toc)
@ -64,6 +72,7 @@ def get_markdown_toc(content):
@register.filter()
@stringfilter
def comment_markdown(content):
# 先将评论内容用Markdown解析再进行HTML清理最后标记为安全
content = CommonMarkdown.get_markdown(content)
return mark_safe(sanitize_html(content))
@ -78,7 +87,9 @@ def truncatechars_content(content):
"""
from django.template.defaultfilters import truncatechars_html
from djangoblog.utils import get_blog_setting
# 获取博客设置
blogsetting = get_blog_setting()
# 按照设置的文章摘要长度截断HTML内容
return truncatechars_html(content, blogsetting.article_sub_length)
@ -86,7 +97,7 @@ def truncatechars_content(content):
@stringfilter
def truncate(content):
from django.utils.html import strip_tags
# 去除HTML标签后截断内容取前150个字符
return strip_tags(content)[:150]
@ -97,11 +108,14 @@ def load_breadcrumb(article):
:param article:
:return:
"""
# 获取文章的分类树
names = article.get_category_tree()
from djangoblog.utils import get_blog_setting
blogsetting = get_blog_setting()
site = get_current_site().domain
# 把网站名称加入面包屑列表
names.append((blogsetting.site_name, '/'))
# 反转列表,调整面包屑顺序
names = names[::-1]
return {
@ -118,9 +132,11 @@ def load_articletags(article):
:param article:
:return:
"""
# 获取文章的所有标签
tags = article.tags.all()
tags_list = []
for tag in tags:
# 为每个标签生成URL、文章数量等信息并随机选择一个引导类颜色
url = tag.get_absolute_url()
count = tag.get_article_count()
tags_list.append((
@ -137,6 +153,7 @@ def load_sidebar(user, linktype):
加载侧边栏
:return:
"""
# 尝试从缓存获取侧边栏数据
value = cache.get("sidebar" + linktype)
if value:
value['user'] = user
@ -145,16 +162,23 @@ def load_sidebar(user, linktype):
logger.info('load sidebar')
from djangoblog.utils import get_blog_setting
blogsetting = get_blog_setting()
# 获取最近的文章
recent_articles = Article.objects.filter(
status='p')[:blogsetting.sidebar_article_count]
# 获取所有分类
sidebar_categorys = Category.objects.all()
# 获取启用的额外侧边栏
extra_sidebars = SideBar.objects.filter(
is_enable=True).order_by('sequence')
# 获取最多阅读的文章
most_read_articles = Article.objects.filter(status='p').order_by(
'-views')[:blogsetting.sidebar_article_count]
# 获取按月份归档的日期
dates = Article.objects.datetimes('creation_time', 'month', order='DESC')
# 获取符合显示类型的链接
links = Links.objects.filter(is_enable=True).filter(
Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A))
# 获取最近的评论
commment_list = Comment.objects.filter(is_enable=True).order_by(
'-id')[:blogsetting.sidebar_comment_count]
# 标签云 计算字体大小
@ -185,6 +209,7 @@ def load_sidebar(user, linktype):
'sidebar_tags': sidebar_tags,
'extra_sidebars': extra_sidebars
}
# 设置侧边栏缓存有效期3小时
cache.set("sidebar" + linktype, value, 60 * 60 * 60 * 3)
logger.info('set sidebar cache.key:{key}'.format(key="sidebar" + linktype))
value['user'] = user
@ -211,9 +236,11 @@ def load_pagination_info(page_obj, page_type, tag_name):
if page_type == '':
if page_obj.has_next():
next_number = page_obj.next_page_number()
# 生成下一页的URL
next_url = reverse('blog:index_page', kwargs={'page': next_number})
if page_obj.has_previous():
previous_number = page_obj.previous_page_number()
# 生成上一页的URL
previous_url = reverse(
'blog:index_page', kwargs={
'page': previous_number})
@ -298,10 +325,12 @@ def load_article_detail(article, isindex, user):
def gravatar_url(email, size=40):
"""获得gravatar头像"""
cachekey = 'gravatat/' + email
# 尝试从缓存获取头像URL
url = cache.get(cachekey)
if url:
return url
else:
# 查找对应的OAuth用户
usermodels = OAuthUser.objects.filter(email=email)
if usermodels:
o = list(filter(lambda x: x.picture is not None, usermodels))
@ -313,7 +342,8 @@ def gravatar_url(email, size=40):
url = "https://www.gravatar.com/avatar/%s?%s" % (hashlib.md5(
email.lower()).hexdigest(), urllib.parse.urlencode({'d': default, 's': str(size)}))
cache.set(cachekey, url, 60 * 60 * 10)
# 设置头像URL缓存有效期10分钟
cache.set(cachekey, url, 60 * 10)
logger.info('set gravatar cache.key:{key}'.format(key=cachekey))
return url
@ -321,6 +351,7 @@ def gravatar_url(email, size=40):
@register.filter
def gravatar(email, size=40):
"""获得gravatar头像"""
# 获取头像URL并生成img标签标记为安全的HTML
url = gravatar_url(email, size)
return mark_safe(
'<img src="%s" height="%d" width="%d">' %
@ -335,10 +366,12 @@ def query(qs, **kwargs):
...
{% endfor %}
"""
# 对查询集进行过滤
return qs.filter(**kwargs)
@register.filter
def addstr(arg1, arg2):
"""concatenate arg1 & arg2"""
return str(arg1) + str(arg2)
# 连接两个字符串
return str(arg1) + str(arg2)

@ -1,13 +1,7 @@
"""
Django settings for djangoblog project.
项目核心配置文件包含数据库中间件应用资源路径等关键运行参数
Generated by 'django-admin startproject' using Django 1.10.2.
For more information on this file, see
https://docs.djangoproject.com/en/1.10/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.10/ref/settings/
"""
import os
import sys
@ -16,328 +10,233 @@ from pathlib import Path
from django.utils.translation import gettext_lazy as _
# 环境变量转布尔值工具函数:处理配置中需要布尔类型的环境变量
def env_to_bool(env, default):
str_val = os.environ.get(env)
return default if str_val is None else str_val == 'True'
# Build paths inside the project like this: BASE_DIR / 'subdir'.
# 项目根目录:当前配置文件所在目录的父目录(即项目根路径)
BASE_DIR = Path(__file__).resolve().parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get(
'DJANGO_SECRET_KEY') or 'n9ceqv38)#&mwuat@(mjb_p%em$e8$qyr#fw9ot!=ba6lijx-6'
# SECURITY WARNING: don't run with debug turned on in production!
# -------------------------- 基础安全与运行配置 --------------------------
# 密钥:生产环境需通过环境变量配置,默认值仅用于开发(避免硬编码泄露)
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY') or 'n9ceqv38)#&mwuat@(mjb_p%em$e8$qyr#fw9ot!=ba6lijx-6'
# 调试模式开发环境True生产环境必须False通过环境变量控制
DEBUG = env_to_bool('DJANGO_DEBUG', True)
# DEBUG = False
# 测试模式标识执行python manage.py test时为True
TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test'
# ALLOWED_HOSTS = []
# 允许访问的主机:生产环境需指定具体域名,*为开发环境临时配置
ALLOWED_HOSTS = ['*', '127.0.0.1', 'example.com']
# django 4.0新增配置
# Django 4.0+ 新增信任的CSRF来源解决跨域CSRF验证问题
CSRF_TRUSTED_ORIGINS = ['http://example.com']
# Application definition
# -------------------------- 已安装应用 --------------------------
INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.admin.apps.SimpleAdminConfig',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.sitemaps',
'mdeditor',
'haystack',
'blog',
'accounts',
'comments',
'oauth',
'servermanager',
'owntracks',
'compressor',
'djangoblog'
'django.contrib.admin.apps.SimpleAdminConfig', # 简化版Admin后台
'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.staticfiles', # Django内置核心应用
'django.contrib.sites', 'django.contrib.sitemaps', # 站点管理、站点地图
'mdeditor', # Markdown编辑器用于文章编辑
'haystack', # 全文搜索框架
'blog', 'accounts', 'comments', 'oauth', 'servermanager', 'owntracks', # 项目业务应用
'compressor', # 静态资源压缩工具
'djangoblog' # 项目主应用
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.gzip.GZipMiddleware',
# 'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.cache.FetchFromCacheMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.http.ConditionalGetMiddleware',
'blog.middleware.OnlineMiddleware'
# -------------------------- 中间件配置 --------------------------
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', # 安全相关中间件
'django.contrib.sessions.middleware.SessionMiddleware', # 会话管理
'django.middleware.locale.LocaleMiddleware', # 国际化支持
'django.middleware.gzip.GZipMiddleware', # 响应GZip压缩
'django.middleware.common.CommonMiddleware', # 通用中间件
'django.middleware.csrf.CsrfViewMiddleware', # CSRF防护
'django.contrib.auth.middleware.AuthenticationMiddleware', # 用户认证
'django.contrib.messages.middleware.MessageMiddleware', # 消息提示
'django.middleware.clickjacking.XFrameOptionsMiddleware', # X-Frame-Options防护
'django.middleware.http.ConditionalGetMiddleware', # 条件请求优化
'blog.middleware.OnlineMiddleware' # 自定义:用户在线状态中间件
]
ROOT_URLCONF = 'djangoblog.urls'
# -------------------------- URL与模板配置 --------------------------
ROOT_URLCONF = 'djangoblog.urls' # 主URL配置文件路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 全局模板目录
'APP_DIRS': True, # 允许加载各应用内的templates目录
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'blog.context_processors.seo_processor'
'blog.context_processors.seo_processor' # 自定义SEO相关上下文
],
},
},
]
WSGI_APPLICATION = 'djangoblog.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
WSGI_APPLICATION = 'djangoblog.wsgi.application' # WSGI应用入口
# -------------------------- 数据库配置 --------------------------
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ.get('DJANGO_MYSQL_DATABASE') or 'djangoblog',
'USER': os.environ.get('DJANGO_MYSQL_USER') or 'root',
'PASSWORD': os.environ.get('DJANGO_MYSQL_PASSWORD') or '123456',
'HOST': os.environ.get('DJANGO_MYSQL_HOST') or '127.0.0.1',
'PORT': int(
os.environ.get('DJANGO_MYSQL_PORT') or 3306),
'OPTIONS': {
'charset': 'utf8mb4'},
'ENGINE': 'django.db.backends.mysql', # 使用MySQL数据库
'NAME': os.environ.get('DJANGO_MYSQL_DATABASE') or 'djangoblog', # 数据库名
'USER': os.environ.get('DJANGO_MYSQL_USER') or 'root', # 数据库用户名
'PASSWORD': os.environ.get('DJANGO_MYSQL_PASSWORD') or '123456', # 密码
'HOST': os.environ.get('DJANGO_MYSQL_HOST') or '127.0.0.1', # 数据库地址
'PORT': int(os.environ.get('DJANGO_MYSQL_PORT') or 3306), # 端口
'OPTIONS': {'charset': 'utf8mb4'}, # 支持emoji的字符集
}}
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
# -------------------------- 密码验证与用户配置 --------------------------
AUTH_PASSWORD_VALIDATORS = [ # Django内置密码强度验证规则
{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'},
{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'},
{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'},
{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'},
]
LANGUAGES = (
('en', _('English')),
('zh-hans', _('Simplified Chinese')),
('zh-hant', _('Traditional Chinese')),
)
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
AUTH_USER_MODEL = 'accounts.BlogUser' # 自定义用户模型替换默认User
LOGIN_URL = '/login/' # 用户登录跳转URL
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
# -------------------------- 国际化与时间配置 --------------------------
LANGUAGES = (('en', _('English')), ('zh-hans', _('Simplified Chinese')), ('zh-hant', _('Traditional Chinese')))
LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'),) # 国际化翻译文件目录
LANGUAGE_CODE = 'zh-hans' # 默认语言:简体中文
TIME_ZONE = 'Asia/Shanghai' # 时区:上海
USE_I18N = True # 启用国际化
USE_L10N = True # 启用本地化
USE_TZ = False # 不使用UTC时间使用本地时间
USE_I18N = True
USE_L10N = True
# -------------------------- 静态资源与媒体文件 --------------------------
STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic') # 生产环境静态资源收集目录
STATIC_URL = '/static/' # 静态资源访问URL前缀
STATICFILES = os.path.join(BASE_DIR, 'static') # 开发环境静态资源目录
USE_TZ = False
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') # 上传文件存储目录
MEDIA_URL = '/media/' # 上传文件访问URL前缀
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
# 静态资源压缩配置compressor
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True # 启用压缩
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.CSSMinFilter']
COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']
# -------------------------- 全文搜索Haystack配置 --------------------------
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'djangoblog.whoosh_cn_backend.WhooshEngine',
'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
'ENGINE': 'djangoblog.whoosh_cn_backend.WhooshEngine', # 中文Whoosh引擎
'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'), # 索引存储路径
},
}
# Automatically update searching index
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
# Allow user login with username and password
AUTHENTICATION_BACKENDS = [
'accounts.user_login_backend.EmailOrUsernameModelBackend']
STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic')
STATIC_URL = '/static/'
STATICFILES = os.path.join(BASE_DIR, 'static')
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' # 实时更新索引
AUTH_USER_MODEL = 'accounts.BlogUser'
LOGIN_URL = '/login/'
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
DATE_TIME_FORMAT = '%Y-%m-%d'
# 生产环境支持Elasticsearch通过环境变量启用
if os.environ.get('DJANGO_ELASTICSEARCH_HOST'):
ELASTICSEARCH_DSL = {'default': {'hosts': os.environ.get('DJANGO_ELASTICSEARCH_HOST')}}
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine'}}
# bootstrap color styles
BOOTSTRAP_COLOR_TYPES = [
'default', 'primary', 'success', 'info', 'warning', 'danger'
]
# paginate
PAGINATE_BY = 10
# http cache timeout
CACHE_CONTROL_MAX_AGE = 2592000
# cache setting
# -------------------------- 缓存配置 --------------------------
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'TIMEOUT': 10800,
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 默认:内存缓存
'TIMEOUT': 10800, # 缓存超时时间(秒)
'LOCATION': 'unique-snowflake',
}
}
# 使用redis作为缓存
# 生产环境支持Redis缓存通过环境变量启用
if os.environ.get("DJANGO_REDIS_URL"):
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}',
}
}
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.redis.RedisCache', 'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}'}}
SITE_ID = 1
BAIDU_NOTIFY_URL = os.environ.get('DJANGO_BAIDU_NOTIFY_URL') \
or 'http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn'
CACHE_CONTROL_MAX_AGE = 2592000 # HTTP缓存最大有效期
# Email:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = env_to_bool('DJANGO_EMAIL_TLS', False)
EMAIL_USE_SSL = env_to_bool('DJANGO_EMAIL_SSL', True)
EMAIL_HOST = os.environ.get('DJANGO_EMAIL_HOST') or 'smtp.mxhichina.com'
EMAIL_PORT = int(os.environ.get('DJANGO_EMAIL_PORT') or 465)
EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER')
EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD')
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
# Setting debug=false did NOT handle except email notifications
ADMINS = [('admin', os.environ.get('DJANGO_ADMIN_EMAIL') or 'admin@admin.com')]
# WX ADMIN password(Two times md5)
WXADMIN = os.environ.get(
'DJANGO_WXADMIN_PASSWORD') or '995F03AC401D6CABABAEF756FC4D43C7'
LOG_PATH = os.path.join(BASE_DIR, 'logs')
# -------------------------- 日志配置 --------------------------
LOG_PATH = os.path.join(BASE_DIR, 'logs') # 日志存储目录
if not os.path.exists(LOG_PATH):
os.makedirs(LOG_PATH, exist_ok=True)
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'root': {
'level': 'INFO',
'handlers': ['console', 'log_file'],
},
'formatters': {
'verbose': {
'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d %(module)s] %(message)s',
}
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'root': {'level': 'INFO', 'handlers': ['console', 'log_file']},
'formatters': {'verbose': {'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d %(module)s] %(message)s'}},
'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}, 'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}},
'handlers': {
'log_file': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': os.path.join(LOG_PATH, 'djangoblog.log'),
'when': 'D',
'formatter': 'verbose',
'interval': 1,
'delay': True,
'backupCount': 5,
'encoding': 'utf-8'
},
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
'null': {
'class': 'logging.NullHandler',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
'log_file': {'level': 'INFO', 'class': 'logging.handlers.TimedRotatingFileHandler', 'filename': os.path.join(LOG_PATH, 'djangoblog.log'), 'when': 'D', 'formatter': 'verbose', 'interval': 1, 'delay': True, 'backupCount': 5, 'encoding': 'utf-8'},
'console': {'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'verbose'},
'null': {'class': 'logging.NullHandler'},
'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}
},
'loggers': {
'djangoblog': {
'handlers': ['log_file', 'console'],
'level': 'INFO',
'propagate': True,
},
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
}
'djangoblog': {'handlers': ['log_file', 'console'], 'level': 'INFO', 'propagate': True},
'django.request': {'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': False}
}
}
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# other
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
# COMPRESS_OFFLINE = True
# -------------------------- 项目业务配置 --------------------------
SITE_ID = 1 # 站点ID用于sitemap等功能
BAIDU_NOTIFY_URL = os.environ.get('DJANGO_BAIDU_NOTIFY_URL') or 'http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn' # 百度收录通知URL
COMPRESS_CSS_FILTERS = [
# creates absolute urls from relative ones
'compressor.filters.css_default.CssAbsoluteFilter',
# css minimizer
'compressor.filters.cssmin.CSSMinFilter'
]
COMPRESS_JS_FILTERS = [
'compressor.filters.jsmin.JSMinFilter'
]
# 时间格式定义
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
DATE_TIME_FORMAT = '%Y-%m-%d'
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'
# Bootstrap样式类型用于标签、按钮等样式随机选择
BOOTSTRAP_COLOR_TYPES = ['default', 'primary', 'success', 'info', 'warning', 'danger']
# 分页配置每页显示10条
PAGINATE_BY = 10
# 邮件配置(用于管理员通知、用户验证等)
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = env_to_bool('DJANGO_EMAIL_TLS', False)
EMAIL_USE_SSL = env_to_bool('DJANGO_EMAIL_SSL', True)
EMAIL_HOST = os.environ.get('DJANGO_EMAIL_HOST') or 'smtp.mxhichina.com'
EMAIL_PORT = int(os.environ.get('DJANGO_EMAIL_PORT') or 465)
EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER')
EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD')
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
ADMINS = [('admin', os.environ.get('DJANGO_ADMIN_EMAIL') or 'admin@admin.com')] # 管理员邮箱(接收错误通知)
# 微信管理员密码二次MD5加密
WXADMIN = os.environ.get('DJANGO_WXADMIN_PASSWORD') or '995F03AC401D6CABABAEF756FC4D43C7'
# X-Frame-Options配置允许同源页面嵌入iframe
X_FRAME_OPTIONS = 'SAMEORIGIN'
# 默认自增字段类型Django 3.2+ 推荐)
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
if os.environ.get('DJANGO_ELASTICSEARCH_HOST'):
ELASTICSEARCH_DSL = {
'default': {
'hosts': os.environ.get('DJANGO_ELASTICSEARCH_HOST')
},
}
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine',
},
}
# Plugin System
PLUGINS_DIR = BASE_DIR / 'plugins'
ACTIVE_PLUGINS = [
'article_copyright',
'reading_time',
'external_links',
'view_count',
'seo_optimizer'
# -------------------------- 插件系统配置 --------------------------
PLUGINS_DIR = BASE_DIR / 'plugins' # 插件目录
ACTIVE_PLUGINS = [ # 启用的插件列表
'article_copyright', # 文章版权信息
'reading_time', # 文章阅读时长
'external_links', # 外部链接处理
'view_count', # 文章阅读量统计
'seo_optimizer' # SEO优化
]

@ -1,378 +1,221 @@
[2025-10-09 20:20:40,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:40,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:40,556] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:40,556] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:40,563] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:40,563] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:40,564] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:40,564] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:40,569] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:40,569] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:40,570] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:40,570] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:44,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:44,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:44,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:44,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:44,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:44,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:44,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:44,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:44,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:44,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:44,028] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:44,028] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:44,086] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-09 20:20:49,912] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:20:50,270] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:20:50,389] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:20:50,389] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:20:53,612] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:20:54,150] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:20:59,864] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:21:00,356] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:21:00,411] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:21:00,566] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:21:00,811] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:21:00,976] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:23:43,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:43,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:43,992] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:43,992] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:43,999] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:43,999] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:44,002] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:23:44,002] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:18,506] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:18,506] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:18,507] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:18,507] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:18,524] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:18,524] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:18,525] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:18,525] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:18,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:18,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:18,540] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:18,540] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:28,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:28,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:28,814] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:28,814] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:28,817] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:28,817] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:28,818] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:28,818] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:28,821] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:28,821] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:28,822] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:28,822] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:56,786] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:56,786] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:56,789] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:56,789] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:56,794] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:56,794] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:56,795] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:56,795] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:56,799] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:56,799] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:56,800] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:56,800] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:31,303] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:25:31,303] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:25:33,319] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:33,319] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:33,320] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:33,320] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:33,324] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:33,324] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:33,325] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:33,325] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:33,328] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:33,328] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:33,329] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:33,329] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:33,332] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:33,332] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:33,334] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:33,334] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:37,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:37,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:37,954] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:37,954] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:37,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:37,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:37,960] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:37,960] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:37,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:37,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:37,963] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:37,963] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:20,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:20,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:20,045] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:20,045] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:20,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:20,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:20,048] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:20,048] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:20,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:20,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:20,051] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:20,051] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:20,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:20,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:20,054] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:20,054] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:21,901] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:21,901] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:21,902] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:21,902] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:21,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:21,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:21,908] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:21,908] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:21,910] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:21,910] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:21,911] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:21,911] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:21,958] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-09 20:26:26,711] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:26:26,731] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:26:26,745] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:26:26,745] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:26:27,351] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:26:27,451] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:26:45,038] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:26:45,038] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:26:45,043] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] 123@example.com
[2025-10-09 20:26:45,043] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] 123@example.com
[2025-10-09 20:26:45,044] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari
[2025-10-09 20:26:45,044] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp
[2025-10-09 20:26:45,046] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara
[2025-10-09 20:26:45,046] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara
[2025-10-09 20:26:45,055] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars
[2025-10-09 20:26:45,055] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars
[2025-10-09 20:26:45,135] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:26:45,143] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:26:45,143] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:29:04,998] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_我是父类目_1
[2025-10-09 20:29:05,280] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:29:05,354] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:29:06,310] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_子类目_1
[2025-10-09 20:29:08,369] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:archives
[2025-10-09 20:29:08,396] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:29:08,421] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:29:12,319] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:34:02,809] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/dian-shi-ju.html"]}
[2025-10-09 20:34:02,809] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/dian-shi-ju.html"]}
[2025-10-09 20:34:02,862] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:34:02,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:34:02,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:34:13,326] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:34:13,619] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:34:13,698] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:34:18,199] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_电视剧_1
[2025-10-09 20:34:18,461] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:34:18,482] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:34:19,716] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_子类目_1
[2025-10-09 20:34:21,259] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_电视剧_1
[2025-10-09 20:34:22,317] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_子类目_1
[2025-10-09 20:41:58,465] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:41:58,465] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:41:58,514] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:41:58,521] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:41:58,521] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:09,233] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:09,233] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:09,327] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:44:09,343] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:09,343] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:17,017] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:17,017] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:17,148] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:44:17,157] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:17,157] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:53,675] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:53,675] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:54,091] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:54,091] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:54,156] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:44:54,165] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:54,165] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:46:20,663] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:46:20,938] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:46:21,021] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:46:24,716] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 20:46:29,907] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_1
[2025-10-09 20:46:30,159] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:46:30,182] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:46:37,264] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_2
[2025-10-09 20:46:44,026] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 20:46:44,152] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:46:44,175] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:47:00,090] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:tag_标签_1
[2025-10-09 20:47:24,617] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/jiao-xue.html"]}
[2025-10-09 20:47:24,617] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/jiao-xue.html"]}
[2025-10-09 20:47:24,665] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:47:24,671] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:47:24,671] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:48:01,610] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 20:48:01,734] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:48:01,812] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:49:15,005] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ren-gong-zhi-neng.html"]}
[2025-10-09 20:49:15,005] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ren-gong-zhi-neng.html"]}
[2025-10-09 20:49:15,051] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:49:15,058] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:15,058] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:36,899] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:49:36,899] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:49:36,943] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:49:36,950] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:36,950] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:40,845] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 20:49:40,987] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:49:41,064] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:49:46,143] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_1
[2025-10-09 20:49:46,213] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:49:46,235] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:49:47,517] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_人工智能_1
[2025-10-09 20:49:48,979] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:49:49,047] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:49:49,067] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:50:19,451] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 20:50:30,234] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 20:50:52,569] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 22:48:15,547] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_计算机_1
[2025-10-09 22:48:16,485] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 22:51:24,558] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:01:50,681] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:04:53,595] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_计算机_1
[2025-10-09 23:04:55,850] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:06:36,040] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/xue-xi.html"]}
[2025-10-09 23:06:36,040] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/xue-xi.html"]}
[2025-10-09 23:06:36,070] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 23:06:36,076] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:06:36,076] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:07:56,321] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/9/20.html"]}
[2025-10-09 23:07:56,321] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/9/20.html"]}
[2025-10-09 23:07:56,361] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 23:07:56,367] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:07:56,367] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:08:05,846] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:08:05,951] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 23:08:05,969] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 23:08:08,490] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 23:08:08,542] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 23:08:08,554] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 23:08:10,568] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:08:16,684] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_1
[2025-10-09 23:08:16,749] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 23:08:16,765] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 23:08:22,894] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_计算机_1
[2025-10-09 23:08:25,921] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:13:52,973] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:20:53,174] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:21:02,934] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:21:04,786] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-12 19:28:40,696] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:28:40,696] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:28:40,696] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:28:40,696] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:28:40,699] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:28:40,699] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:28:40,699] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:28:40,699] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:28:40,702] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:28:40,702] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:28:40,702] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:28:40,702] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:28:40,704] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:28:40,704] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:28:40,704] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:28:40,704] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:28:40,708] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:28:40,708] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:28:40,708] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:28:40,708] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:28:41,604] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:28:41,604] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:28:41,605] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:28:41,605] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:28:41,606] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:28:41,606] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:28:41,606] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:28:41,606] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:28:41,608] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:28:41,608] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:28:41,608] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:28:41,608] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:28:41,609] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:28:41,609] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:28:41,610] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:28:41,610] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:28:41,611] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:28:41,611] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:28:41,612] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:28:41,612] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:28:41,639] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-12 19:28:46,951] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-12 19:28:46,966] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-12 19:28:46,983] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-12 19:28:46,983] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-12 19:28:47,720] INFO [blog.templatetags.blog_tags.load_sidebar:162 blog_tags] load sidebar
[2025-10-12 19:28:47,783] INFO [blog.templatetags.blog_tags.load_sidebar:214 blog_tags] set sidebar cache.key:sidebari
[2025-10-12 19:30:46,157] INFO [django.utils.autoreload.trigger_reload:265 autoreload] D:\software_project\src\DjangoBlog\servermanager\api\blogapi.py changed, reloading.
[2025-10-12 19:30:47,195] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:30:47,195] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:30:47,196] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:30:47,196] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:30:47,197] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:30:47,197] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:30:47,198] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:30:47,198] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:30:47,199] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:30:47,199] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:30:47,200] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:30:47,200] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:30:47,201] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:30:47,201] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:30:47,201] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:30:47,201] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:30:47,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:30:47,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:30:47,203] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:30:47,203] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:30:47,234] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-12 19:41:06,263] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:06,263] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:06,264] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:06,264] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:06,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:06,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:06,265] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:06,265] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:06,266] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:06,266] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:06,266] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:06,266] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:06,267] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:06,267] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:06,267] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:06,267] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:06,268] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:06,268] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:06,268] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:06,268] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:15,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:15,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:15,956] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:15,956] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:15,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:15,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:15,957] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:15,957] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:15,958] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:15,958] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:15,958] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:15,958] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:15,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:15,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:15,959] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:15,959] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:15,960] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:15,960] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:15,960] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:15,960] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:29,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:29,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:29,188] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:29,188] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:29,190] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:29,190] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:29,190] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:29,190] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:29,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:29,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:29,191] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:29,191] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:29,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:29,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:29,192] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:29,192] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:29,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:29,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:29,193] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:29,193] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:30,115] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:30,115] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:30,115] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:30,115] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:30,116] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:30,116] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:30,116] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:30,116] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:30,117] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:30,117] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:30,117] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:30,117] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:30,118] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:30,118] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:30,119] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:30,119] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:30,120] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:30,120] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:30,120] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:30,120] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:30,144] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-12 19:41:33,755] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-12 19:38:05,975] INFO [django.utils.autoreload.trigger_reload:265 autoreload] D:\software_project\src\DjangoBlog\djangoblog\settings.py changed, reloading.
[2025-10-12 19:41:51,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:51,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:41:51,725] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:51,725] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:41:51,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:51,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:41:51,727] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:51,727] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:41:51,728] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:51,728] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:41:51,728] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:51,728] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:41:51,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:51,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:41:51,729] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:51,729] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:41:51,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:51,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:41:51,732] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:51,732] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:41:51,756] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-12 19:42:05,845] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:42:05,845] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:42:05,846] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:42:05,846] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:42:05,847] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:42:05,847] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:42:05,847] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:42:05,847] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:42:05,848] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:42:05,848] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:42:05,849] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:42:05,849] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:42:05,850] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:42:05,850] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:42:05,850] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:42:05,850] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:42:05,851] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:42:05,851] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:42:05,851] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:42:05,851] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:42:06,754] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:42:06,754] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-12 19:42:06,754] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:42:06,754] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-12 19:42:06,755] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:42:06,755] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-12 19:42:06,755] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:42:06,755] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-12 19:42:06,757] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:42:06,757] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-12 19:42:06,758] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:42:06,758] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-12 19:42:06,759] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:42:06,759] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-12 19:42:06,772] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:42:06,772] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-12 19:42:06,775] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:42:06,775] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-12 19:42:06,775] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:42:06,775] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-12 19:42:06,808] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-12 19:42:37,150] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-12 19:42:37,158] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-12 19:42:37,164] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-12 19:42:37,164] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-12 19:42:37,461] INFO [blog.templatetags.blog_tags.load_sidebar:162 blog_tags] load sidebar
[2025-10-12 19:42:37,480] INFO [blog.templatetags.blog_tags.load_sidebar:214 blog_tags] set sidebar cache.key:sidebari
[2025-10-12 19:42:39,464] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1

@ -0,0 +1,378 @@
[2025-10-09 20:20:40,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:40,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:40,556] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:40,556] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:40,563] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:40,563] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:40,564] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:40,564] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:40,569] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:40,569] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:40,570] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:40,570] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:40,576] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:40,582] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:44,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:44,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:20:44,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:44,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:44,022] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:20:44,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:44,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:20:44,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:44,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:20:44,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:44,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:20:44,028] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:44,028] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:44,031] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:20:44,086] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-09 20:20:49,912] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:20:50,270] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:20:50,389] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:20:50,389] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:20:53,612] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:20:54,150] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:20:59,864] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:21:00,356] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:21:00,411] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:21:00,566] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:21:00,811] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:21:00,976] INFO [blog.models.comment_list:151 models] set article comments:19
[2025-10-09 20:23:43,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:43,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:43,992] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:43,992] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:43,993] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:43,994] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:43,997] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:43,999] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:43,999] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:44,002] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:23:44,002] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:59,019] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:59,021] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:59,023] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:59,025] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:23:59,027] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:18,503] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:18,506] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:18,506] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:18,507] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:18,507] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:18,524] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:18,524] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:18,525] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:18,525] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:18,529] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:18,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:18,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:18,540] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:18,540] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:28,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:28,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:28,814] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:28,814] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:28,816] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:28,817] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:28,817] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:28,818] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:28,818] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:28,819] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:28,821] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:28,821] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:28,822] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:28,822] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:56,786] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:56,786] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:24:56,789] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:56,789] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:56,792] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:24:56,794] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:56,794] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:24:56,795] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:56,795] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:56,797] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:24:56,799] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:56,799] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:24:56,800] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:24:56,800] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:31,303] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:25:31,303] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:25:33,319] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:33,319] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:33,320] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:33,320] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:33,322] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:33,324] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:33,324] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:33,325] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:33,325] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:33,328] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:33,328] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:33,329] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:33,329] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:33,332] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:33,332] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:33,334] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:33,334] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:37,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:37,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:25:37,954] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:37,954] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:37,957] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:25:37,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:37,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:25:37,960] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:37,960] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:25:37,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:37,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:25:37,963] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:37,963] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:25:37,965] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:20,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:20,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:20,045] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:20,045] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:20,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:20,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:20,048] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:20,048] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:20,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:20,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:20,051] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:20,051] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:20,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:20,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:20,054] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:20,054] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:20,056] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:21,901] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:21,901] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章结尾版权声明 initialized.
[2025-10-09 20:26:21,902] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:21,902] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: article_copyright
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 阅读时间预测 initialized.
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:21,904] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: reading_time
[2025-10-09 20:26:21,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:21,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 外部链接处理器 initialized.
[2025-10-09 20:26:21,908] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:21,908] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: external_links
[2025-10-09 20:26:21,910] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:21,910] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] 文章浏览次数统计 initialized.
[2025-10-09 20:26:21,911] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:21,911] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: view_count
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:23 base_plugin] SEO 优化器 initialized.
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:21,913] INFO [djangoblog.plugin_manage.loader.load_plugins:17 loader] Successfully loaded plugin: seo_optimizer
[2025-10-09 20:26:21,958] INFO [django.utils.autoreload.run_with_reloader:667 autoreload] Watching for file changes with StatReloader
[2025-10-09 20:26:26,711] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:26:26,731] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:26:26,745] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:26:26,745] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:26:27,351] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:26:27,451] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:26:45,038] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:26:45,038] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:26:45,043] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] 123@example.com
[2025-10-09 20:26:45,043] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] 123@example.com
[2025-10-09 20:26:45,044] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari
[2025-10-09 20:26:45,044] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp
[2025-10-09 20:26:45,045] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp
[2025-10-09 20:26:45,046] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara
[2025-10-09 20:26:45,046] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara
[2025-10-09 20:26:45,055] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars
[2025-10-09 20:26:45,055] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars
[2025-10-09 20:26:45,135] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:26:45,143] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:26:45,143] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:29:04,998] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_我是父类目_1
[2025-10-09 20:29:05,280] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:29:05,354] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:29:06,310] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_子类目_1
[2025-10-09 20:29:08,369] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:archives
[2025-10-09 20:29:08,396] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:29:08,421] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:29:12,319] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:34:02,809] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/dian-shi-ju.html"]}
[2025-10-09 20:34:02,809] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/dian-shi-ju.html"]}
[2025-10-09 20:34:02,862] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:34:02,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:34:02,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:34:13,326] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:34:13,619] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:34:13,698] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:34:18,199] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_电视剧_1
[2025-10-09 20:34:18,461] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:34:18,482] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:34:19,716] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_子类目_1
[2025-10-09 20:34:21,259] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_电视剧_1
[2025-10-09 20:34:22,317] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_子类目_1
[2025-10-09 20:41:58,465] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:41:58,465] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:41:58,514] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:41:58,521] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:41:58,521] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:09,233] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:09,233] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:09,327] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:44:09,343] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:09,343] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:17,017] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:17,017] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/lxl.html"]}
[2025-10-09 20:44:17,148] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:44:17,157] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:17,157] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:53,675] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:53,675] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:54,091] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:54,091] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/9/16/1.html"]}
[2025-10-09 20:44:54,156] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:44:54,165] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:44:54,165] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:46:20,663] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:46:20,938] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:46:21,021] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:46:24,716] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 20:46:29,907] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_1
[2025-10-09 20:46:30,159] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:46:30,182] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:46:37,264] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_2
[2025-10-09 20:46:44,026] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 20:46:44,152] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:46:44,175] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:47:00,090] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:tag_标签_1
[2025-10-09 20:47:24,617] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/jiao-xue.html"]}
[2025-10-09 20:47:24,617] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/jiao-xue.html"]}
[2025-10-09 20:47:24,665] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:47:24,671] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:47:24,671] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:48:01,610] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 20:48:01,734] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:48:01,812] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:49:15,005] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ren-gong-zhi-neng.html"]}
[2025-10-09 20:49:15,005] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ren-gong-zhi-neng.html"]}
[2025-10-09 20:49:15,051] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:49:15,058] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:15,058] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:36,899] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:49:36,899] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/category/ji-suan-ji.html"]}
[2025-10-09 20:49:36,943] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 20:49:36,950] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:36,950] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 20:49:40,845] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 20:49:40,987] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:49:41,064] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 20:49:46,143] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_1
[2025-10-09 20:49:46,213] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:49:46,235] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 20:49:47,517] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_人工智能_1
[2025-10-09 20:49:48,979] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 20:49:49,047] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 20:49:49,067] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 20:50:19,451] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 20:50:30,234] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 20:50:52,569] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 22:48:15,547] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_计算机_1
[2025-10-09 22:48:16,485] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 22:51:24,558] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:01:50,681] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:04:53,595] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_计算机_1
[2025-10-09 23:04:55,850] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:06:36,040] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/xue-xi.html"]}
[2025-10-09 23:06:36,040] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/xue-xi.html"]}
[2025-10-09 23:06:36,070] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 23:06:36,076] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:06:36,076] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:07:56,321] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/9/20.html"]}
[2025-10-09 23:07:56,321] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/9/20.html"]}
[2025-10-09 23:07:56,361] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache.
[2025-10-09 23:07:56,367] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:07:56,367] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting
[2025-10-09 23:08:05,846] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:08:05,951] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 23:08:05,969] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarp
[2025-10-09 23:08:08,490] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1
[2025-10-09 23:08:08,542] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 23:08:08,554] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebari
[2025-10-09 23:08:10,568] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:08:16,684] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_计算机_1
[2025-10-09 23:08:16,749] INFO [blog.templatetags.blog_tags.load_sidebar:145 blog_tags] load sidebar
[2025-10-09 23:08:16,765] INFO [blog.templatetags.blog_tags.load_sidebar:189 blog_tags] set sidebar cache.key:sidebarl
[2025-10-09 23:08:22,894] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_计算机_1
[2025-10-09 23:08:25,921] INFO [blog.models.comment_list:151 models] set article comments:1
[2025-10-09 23:13:52,973] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:20:53,174] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:21:02,934] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1
[2025-10-09 23:21:04,786] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1

@ -1,27 +1,51 @@
# 导入Django-Haystack的搜索查询集类用于实现全文搜索功能
from haystack.query import SearchQuerySet
# 导入博客应用的核心数据模型:文章模型(Article)和分类模型(Category)
from blog.models import Article, Category
class BlogApi:
"""
博客系统数据接口封装类
统一提供文章搜索分类查询分类文章筛选最新文章获取等核心数据操作
"""
def __init__(self):
# 初始化搜索查询集,用于后续全文搜索
self.searchqueryset = SearchQuerySet()
# 执行空查询初始化搜索状态,避免首次搜索异常
self.searchqueryset.auto_query('')
# 定义每次查询的最大返回数量8条控制数据返回规模
self.__max_takecount__ = 8
def search_articles(self, query):
"""根据关键词搜索文章
:param query: 搜索关键词
:return: 匹配的前8条文章结果含完整模型数据
"""
# 按关键词构建搜索查询
sqs = self.searchqueryset.auto_query(query)
# 加载完整的关联模型数据,避免延迟加载问题
sqs = sqs.load_all()
# 限制返回结果数量并返回
return sqs[:self.__max_takecount__]
def get_category_lists(self):
"""获取所有博客分类
:return: 包含所有分类的查询集
"""
return Category.objects.all()
def get_category_articles(self, categoryname):
"""根据分类名称筛选该分类下的文章
:param categoryname: 目标分类名称
:return: 该分类下的前8条文章无结果时返回None
"""
# 按分类名称过滤文章跨模型匹配Category的name字段
articles = Article.objects.filter(category__name=categoryname)
if articles:
return articles[:self.__max_takecount__]
return None
return articles[:self.__max_takecount__] if articles else None
def get_recent_articles(self):
return Article.objects.all()[:self.__max_takecount__]
"""获取最新发布的文章
:return: 最新的8条文章查询集默认按创建时间排序
"""
return Article.objects.all()[:self.__max_takecount__]
Loading…
Cancel
Save