diff --git a/doc/文档模板-开源软件泛读、标注和维护报告文档.docx b/doc/文档模板-开源软件泛读、标注和维护报告文档.docx new file mode 100644 index 0000000..0682467 Binary files /dev/null and b/doc/文档模板-开源软件泛读、标注和维护报告文档.docx differ diff --git a/doc/演示视频.mp4 b/doc/演示视频.mp4 new file mode 100644 index 0000000..27d7ef1 Binary files /dev/null and b/doc/演示视频.mp4 differ diff --git a/src/accounts/__pycache__/__init__.cpython-311.pyc b/src/accounts/__pycache__/__init__.cpython-311.pyc index fde4d05..c67ec3a 100644 Binary files a/src/accounts/__pycache__/__init__.cpython-311.pyc and b/src/accounts/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/admin.cpython-311.pyc b/src/accounts/__pycache__/admin.cpython-311.pyc index 796783e..acf8557 100644 Binary files a/src/accounts/__pycache__/admin.cpython-311.pyc and b/src/accounts/__pycache__/admin.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/apps.cpython-311.pyc b/src/accounts/__pycache__/apps.cpython-311.pyc index a59634c..0352e88 100644 Binary files a/src/accounts/__pycache__/apps.cpython-311.pyc and b/src/accounts/__pycache__/apps.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/forms.cpython-311.pyc b/src/accounts/__pycache__/forms.cpython-311.pyc index 22b4e8e..5ae13de 100644 Binary files a/src/accounts/__pycache__/forms.cpython-311.pyc and b/src/accounts/__pycache__/forms.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/models.cpython-311.pyc b/src/accounts/__pycache__/models.cpython-311.pyc index 20b237e..72d5c99 100644 Binary files a/src/accounts/__pycache__/models.cpython-311.pyc and b/src/accounts/__pycache__/models.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/urls.cpython-311.pyc b/src/accounts/__pycache__/urls.cpython-311.pyc index 66af091..30ac31a 100644 Binary files a/src/accounts/__pycache__/urls.cpython-311.pyc and b/src/accounts/__pycache__/urls.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/user_login_backend.cpython-311.pyc b/src/accounts/__pycache__/user_login_backend.cpython-311.pyc index 798bfd8..0d7a35b 100644 Binary files a/src/accounts/__pycache__/user_login_backend.cpython-311.pyc and b/src/accounts/__pycache__/user_login_backend.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/utils.cpython-311.pyc b/src/accounts/__pycache__/utils.cpython-311.pyc index 9fb3583..b5e34cc 100644 Binary files a/src/accounts/__pycache__/utils.cpython-311.pyc and b/src/accounts/__pycache__/utils.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/views.cpython-311.pyc b/src/accounts/__pycache__/views.cpython-311.pyc index 92a8bb5..b786a14 100644 Binary files a/src/accounts/__pycache__/views.cpython-311.pyc and b/src/accounts/__pycache__/views.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc index 6c26aa5..e49361e 100644 Binary files a/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc b/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc index 8aec6da..bb150e5 100644 Binary files a/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc and b/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc b/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc index 5e23d42..536175d 100644 Binary files a/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc and b/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc b/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc index cbbaeae..20608e6 100644 Binary files a/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/__pycache__/__init__.cpython-311.pyc b/src/blog/__pycache__/__init__.cpython-311.pyc index 7427588..9507673 100644 Binary files a/src/blog/__pycache__/__init__.cpython-311.pyc and b/src/blog/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/__pycache__/admin.cpython-311.pyc b/src/blog/__pycache__/admin.cpython-311.pyc index 118e2b0..805732a 100644 Binary files a/src/blog/__pycache__/admin.cpython-311.pyc and b/src/blog/__pycache__/admin.cpython-311.pyc differ diff --git a/src/blog/__pycache__/apps.cpython-311.pyc b/src/blog/__pycache__/apps.cpython-311.pyc index 4f47c02..06d6ead 100644 Binary files a/src/blog/__pycache__/apps.cpython-311.pyc and b/src/blog/__pycache__/apps.cpython-311.pyc differ diff --git a/src/blog/__pycache__/context_processors.cpython-311.pyc b/src/blog/__pycache__/context_processors.cpython-311.pyc index 520645d..4666546 100644 Binary files a/src/blog/__pycache__/context_processors.cpython-311.pyc and b/src/blog/__pycache__/context_processors.cpython-311.pyc differ diff --git a/src/blog/__pycache__/documents.cpython-311.pyc b/src/blog/__pycache__/documents.cpython-311.pyc index 428ead8..d05b0f1 100644 Binary files a/src/blog/__pycache__/documents.cpython-311.pyc and b/src/blog/__pycache__/documents.cpython-311.pyc differ diff --git a/src/blog/__pycache__/middleware.cpython-311.pyc b/src/blog/__pycache__/middleware.cpython-311.pyc index 07d696b..220b32a 100644 Binary files a/src/blog/__pycache__/middleware.cpython-311.pyc and b/src/blog/__pycache__/middleware.cpython-311.pyc differ diff --git a/src/blog/__pycache__/models.cpython-311.pyc b/src/blog/__pycache__/models.cpython-311.pyc index a707f38..886636b 100644 Binary files a/src/blog/__pycache__/models.cpython-311.pyc and b/src/blog/__pycache__/models.cpython-311.pyc differ diff --git a/src/blog/__pycache__/urls.cpython-311.pyc b/src/blog/__pycache__/urls.cpython-311.pyc index fa75302..2d4e92d 100644 Binary files a/src/blog/__pycache__/urls.cpython-311.pyc and b/src/blog/__pycache__/urls.cpython-311.pyc differ diff --git a/src/blog/__pycache__/views.cpython-311.pyc b/src/blog/__pycache__/views.cpython-311.pyc index 53309ba..7a89bbb 100644 Binary files a/src/blog/__pycache__/views.cpython-311.pyc and b/src/blog/__pycache__/views.cpython-311.pyc differ diff --git a/src/blog/article_create_view.py b/src/blog/article_create_view.py new file mode 100644 index 0000000..e6738d6 --- /dev/null +++ b/src/blog/article_create_view.py @@ -0,0 +1,73 @@ +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect, get_object_or_404 +from django.views.generic.edit import CreateView +from django.urls import reverse_lazy +from .models import Article, Category, Tag, ArticleImage +from .forms import ArticleForm + + +class ArticleCreateView(LoginRequiredMixin, CreateView): + """创建文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_create.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + + # 关联临时图片到新创建的文章 + # 获取会话中的临时图片ID列表 + temp_image_ids = self.request.session.get('temp_image_ids', []) + + # 查找这些临时图片 + temp_images = ArticleImage.objects.filter(id__in=temp_image_ids) + + # 将这些图片关联到新创建的文章 + for image in temp_images: + image.article = form.instance + image.save() + + # 清除会话中的临时图片ID列表 + self.request.session['temp_image_ids'] = [] + self.request.session.modified = True + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) diff --git a/src/blog/article_delete_view.py b/src/blog/article_delete_view.py new file mode 100644 index 0000000..59ecd19 --- /dev/null +++ b/src/blog/article_delete_view.py @@ -0,0 +1,46 @@ +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect, get_object_or_404 +from django.views.generic.edit import DeleteView +from django.urls import reverse_lazy +from .models import Article, Category, Tag, ArticleImage + + +class ArticleDeleteView(LoginRequiredMixin, DeleteView): + """删除文章视图""" + model = Article + template_name = 'blog/article_delete_confirm.html' + pk_url_kwarg = 'article_id' + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以删除 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def delete(self, request, *args, **kwargs): + # 删除文章前先删除所有相关图片 + self.object = self.get_object() + images = ArticleImage.objects.filter(article=self.object) + for image in images: + # 删除图片文件 + image.image.delete() + # 删除图片记录 + image.delete() + + # 调用父类的delete方法删除文章 + return super().delete(request, *args, *kwargs) + + def get_success_url(self): + return reverse_lazy('blog:index') diff --git a/src/blog/article_update_view.py b/src/blog/article_update_view.py new file mode 100644 index 0000000..bca5f4c --- /dev/null +++ b/src/blog/article_update_view.py @@ -0,0 +1,101 @@ +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect, get_object_or_404 +from django.views.generic.edit import UpdateView +from django.urls import reverse_lazy +from .models import Article, Category, Tag, ArticleImage +from .forms import ArticleForm + + +class ArticleUpdateView(LoginRequiredMixin, UpdateView): + """更新文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_edit.html' + pk_url_kwarg = 'article_id' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def get_initial(self): + initial = super().get_initial() + # 设置分类初始值 + if self.object.category: + initial['category'] = self.object.category.name + + # 设置标签初始值 + if self.object.tags.exists(): + tag_names = [tag.name for tag in self.object.tags.all()] + initial['tags'] = ', '.join(tag_names) + + return initial + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以编辑 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + form.instance.tags.clear() # 清除现有标签 + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + else: + form.instance.tags.clear() # 如果没有标签,清除所有标签 + + # 关联临时图片到文章 + # 获取会话中的临时图片ID列表 + temp_image_ids = self.request.session.get('temp_image_ids', []) + + # 查找这些临时图片 + temp_images = ArticleImage.objects.filter(id__in=temp_image_ids) + + # 将这些图片关联到文章 + for image in temp_images: + image.article = form.instance + image.save() + + # 清除会话中的临时图片ID列表 + self.request.session['temp_image_ids'] = [] + self.request.session.modified = True + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) diff --git a/src/blog/article_views.py b/src/blog/article_views.py new file mode 100644 index 0000000..a7ceed4 --- /dev/null +++ b/src/blog/article_views.py @@ -0,0 +1,135 @@ +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect, get_object_or_404 +from django.views.generic.edit import CreateView, UpdateView +from django.urls import reverse_lazy +from .models import Article, Category, Tag, ArticleImage +from .forms import ArticleForm + + +class ArticleCreateView(LoginRequiredMixin, CreateView): + """创建文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_create.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +class ArticleUpdateView(LoginRequiredMixin, UpdateView): + """更新文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_edit.html' + pk_url_kwarg = 'article_id' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def get_initial(self): + initial = super().get_initial() + # 设置分类初始值 + if self.object.category: + initial['category'] = self.object.category.name + + # 设置标签初始值 + if self.object.tags.exists(): + tag_names = [tag.name for tag in self.object.tags.all()] + initial['tags'] = ', '.join(tag_names) + + return initial + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以编辑 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + form.instance.tags.clear() # 清除现有标签 + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + else: + form.instance.tags.clear() # 如果没有标签,清除所有标签 + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) diff --git a/src/blog/article_views_new.py b/src/blog/article_views_new.py new file mode 100644 index 0000000..ec2dfd5 --- /dev/null +++ b/src/blog/article_views_new.py @@ -0,0 +1,153 @@ +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect, get_object_or_404 +from django.views.generic.edit import CreateView, UpdateView +from django.urls import reverse_lazy +from .models import Article, Category, Tag, ArticleImage +from .forms import ArticleForm + + +class ArticleCreateView(LoginRequiredMixin, CreateView): + """创建文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_create.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + + # 处理临时上传的图片 + temp_image_ids = self.request.session.get('temp_image_ids', []) + if temp_image_ids: + # 关联这些图片到当前文章 + ArticleImage.objects.filter(id__in=temp_image_ids).update(article=self.object) + # 清除会话中的临时图片ID列表 + self.request.session['temp_image_ids'] = [] + self.request.session.modified = True + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +class ArticleUpdateView(LoginRequiredMixin, UpdateView): + """更新文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_edit.html' + pk_url_kwarg = 'article_id' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def get_initial(self): + initial = super().get_initial() + # 设置分类初始值 + if self.object.category: + initial['category'] = self.object.category.name + + # 设置标签初始值 + if self.object.tags.exists(): + tag_names = [tag.name for tag in self.object.tags.all()] + initial['tags'] = ', '.join(tag_names) + + return initial + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以编辑 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + form.instance.tags.clear() # 清除现有标签 + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + else: + form.instance.tags.clear() # 如果没有标签,清除所有标签 + + # 处理临时上传的图片 + temp_image_ids = self.request.session.get('temp_image_ids', []) + if temp_image_ids: + # 关联这些图片到当前文章 + ArticleImage.objects.filter(id__in=temp_image_ids).update(article=self.object) + # 清除会话中的临时图片ID列表 + self.request.session['temp_image_ids'] = [] + self.request.session.modified = True + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) diff --git a/src/blog/forms.py b/src/blog/forms.py index 715be76..fc20851 100644 --- a/src/blog/forms.py +++ b/src/blog/forms.py @@ -1,7 +1,9 @@ import logging from django import forms +from django.utils.translation import gettext_lazy as _ from haystack.forms import SearchForm +from .models import Article, Category, Tag logger = logging.getLogger(__name__) @@ -17,3 +19,62 @@ class BlogSearchForm(SearchForm): if self.cleaned_data['querydata']: logger.info(self.cleaned_data['querydata']) return datas + + +class ArticleForm(forms.ModelForm): + """文章表单""" + title = forms.CharField(label='标题', max_length=200, required=True) + body = forms.CharField(label='内容', widget=forms.Textarea(attrs={'id': 'id_body_md'}), required=True) + status = forms.ChoiceField( + label='状态', + choices=[('p', '发布'), ('d', '草稿')], + initial='p', + widget=forms.Select, + required=True + ) + comment_status = forms.ChoiceField( + label='评论状态', + choices=[('o', '开启'), ('c', '关闭')], + initial='o', + widget=forms.Select, + required=True + ) + type = forms.ChoiceField( + label='类型', + choices=[('a', '文章'), ('p', '页面')], + initial='a', + widget=forms.Select, + required=True + ) + show_toc = forms.BooleanField(label='显示目录', required=False) + category = forms.CharField( + label='分类', + required=True, + widget=forms.TextInput(attrs={ + 'class': 'form-control', + 'list': 'category-list', + 'placeholder': '选择或输入分类名称' + }) + ) + tags = forms.CharField( + label='标签', + required=False, + widget=forms.TextInput(attrs={ + 'class': 'form-control', + 'list': 'tag-list', + 'placeholder': '选择或输入标签,多个标签用逗号分隔' + }) + ) + + class Meta: + model = Article + fields = ['title', 'body', 'status', 'comment_status', 'type', 'show_toc'] + + def __init__(self, *args, **kwargs): + super(ArticleForm, self).__init__(*args, **kwargs) + self.fields['title'].widget.attrs.update({'class': 'form-control'}) + self.fields['body'].widget.attrs.update({'class': 'form-control mdeditor', 'rows': 20}) + self.fields['status'].widget.attrs.update({'class': 'form-control'}) + self.fields['comment_status'].widget.attrs.update({'class': 'form-control'}) + self.fields['type'].widget.attrs.update({'class': 'form-control'}) + self.fields['show_toc'].widget.attrs.update({'class': 'form-check-input'}) diff --git a/src/blog/forms_image.py b/src/blog/forms_image.py new file mode 100644 index 0000000..2ba585d --- /dev/null +++ b/src/blog/forms_image.py @@ -0,0 +1,15 @@ + +from django import forms +from django.utils.translation import gettext_lazy as _ +from .models import ArticleImage + + +class ImageUploadForm(forms.ModelForm): + """图片上传表单""" + class Meta: + model = ArticleImage + fields = ['image', 'description'] + widgets = { + 'image': forms.FileInput(attrs={'class': 'form-control', 'accept': 'image/*'}), + 'description': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('可选,添加图片描述')}) + } diff --git a/src/blog/image_views.py b/src/blog/image_views.py new file mode 100644 index 0000000..973d941 --- /dev/null +++ b/src/blog/image_views.py @@ -0,0 +1,127 @@ + +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.http import JsonResponse +from django.shortcuts import get_object_or_404 +from django.views.generic.edit import CreateView, DeleteView +from django.urls import reverse_lazy +from django.views.decorators.http import require_POST +from django.views.decorators.csrf import csrf_exempt +import json + +from .models import Article, ArticleImage +from .forms_image import ImageUploadForm + + +class ImageUploadView(LoginRequiredMixin, CreateView): + """上传图片视图""" + model = ArticleImage + form_class = ImageUploadForm + template_name = 'blog/image_upload.html' + + def form_valid(self, form): + article_id = self.kwargs.get('article_id') + article = get_object_or_404(Article, id=article_id) + + # 检查用户是否有权限上传图片 + if article.author != self.request.user and not self.request.user.is_superuser: + return JsonResponse({'status': 'error', 'message': '没有权限上传图片'}, status=403) + + form.instance.article = article + self.object = form.save() + + # 返回JSON响应,包含图片URL和ID + return JsonResponse({ + 'status': 'success', + 'image_id': self.object.id, + 'image_url': self.object.image.url, + 'description': self.object.description + }) + + def form_invalid(self, form): + return JsonResponse({'status': 'error', 'errors': form.errors}, status=400) + + +@login_required +@require_POST +@csrf_exempt +def markdown_image_upload(request): + """为Markdown编辑器提供的图片上传接口""" + if request.method == 'POST' and request.FILES.get('image'): + image_file = request.FILES['image'] + description = request.POST.get('description', '') + article_id = request.POST.get('article_id') + + try: + # 获取会话中的临时图片ID列表 + temp_image_ids = request.session.get('temp_image_ids', []) + + # 创建图片对象,但不立即关联到文章 + temp_image = ArticleImage( + image=image_file, + description=description or "Markdown编辑器上传" + ) + + # 如果有文章ID,尝试关联到文章 + if article_id: + try: + from blog.models import Article + article = Article.objects.get(id=article_id, author=request.user) + temp_image.article = article + except Article.DoesNotExist: + # 文章不存在,不关联 + temp_image.article_id = None + else: + # 没有文章ID,保存为临时图片 + temp_image.article_id = None + + # 保存图片 + temp_image.save() + + # 如果是临时图片,将图片ID添加到会话中的临时图片列表 + if not temp_image.article: + temp_image_ids.append(temp_image.id) + request.session['temp_image_ids'] = temp_image_ids + request.session.modified = True + + # 返回Markdown编辑器需要的格式 + return JsonResponse({ + 'success': 1, + 'message': '上传成功', + 'url': temp_image.image.url, + 'image_id': temp_image.id # 添加图片ID,以便后续可以删除 + }) + except Exception as e: + # 记录错误并返回失败信息 + import logging + logger = logging.getLogger(__name__) + logger.error(f"图片上传失败: {str(e)}") + + return JsonResponse({ + 'success': 0, + 'message': f'上传失败: {str(e)}' + }) + + return JsonResponse({ + 'success': 0, + 'message': '上传失败:未提供图片文件' + }) + + +class ImageDeleteView(LoginRequiredMixin, DeleteView): + """删除图片视图""" + model = ArticleImage + pk_url_kwarg = 'image_id' + + def delete(self, request, *args, **kwargs): + self.object = self.get_object() + + # 检查用户是否有权限删除图片 + if self.object.article.author != request.user and not request.user.is_superuser: + return JsonResponse({'status': 'error', 'message': '没有权限删除图片'}, status=403) + + # 删除图片文件 + self.object.image.delete() + self.object.delete() + + return JsonResponse({'status': 'success', 'message': '图片已删除'}) diff --git a/src/blog/management/__pycache__/__init__.cpython-311.pyc b/src/blog/management/__pycache__/__init__.cpython-311.pyc index da92857..a4d1585 100644 Binary files a/src/blog/management/__pycache__/__init__.cpython-311.pyc and b/src/blog/management/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/management/commands/create_categories.py b/src/blog/management/commands/create_categories.py new file mode 100644 index 0000000..4b7bdb1 --- /dev/null +++ b/src/blog/management/commands/create_categories.py @@ -0,0 +1,41 @@ +from django.core.management.base import BaseCommand +from blog.models import Category + + +class Command(BaseCommand): + help = '创建文章分类' + + def handle(self, *args, **options): + categories = [ + '技术', + '生活', + '旅行', + '美食', + '摄影', + '读书', + '电影', + '音乐', + '编程', + '设计', + '健康', + '教育', + '职场', + '财经', + '历史', + '文化', + '体育', + '游戏', + '科技' + ] + + for name in categories: + category, created = Category.objects.get_or_create( + name=name, + defaults={'parent_category': None} + ) + if created: + self.stdout.write(self.style.SUCCESS(f'创建分类: {name}')) + else: + self.stdout.write(self.style.WARNING(f'分类已存在: {name}')) + + self.stdout.write(self.style.SUCCESS('分类创建完成')) diff --git a/src/blog/management/commands/list_categories.py b/src/blog/management/commands/list_categories.py new file mode 100644 index 0000000..3ce3752 --- /dev/null +++ b/src/blog/management/commands/list_categories.py @@ -0,0 +1,13 @@ +from django.core.management.base import BaseCommand +from blog.models import Category + + +class Command(BaseCommand): + help = '列出所有文章分类' + + def handle(self, *args, **options): + categories = Category.objects.all() + self.stdout.write('当前数据库中的分类:') + for category in categories: + self.stdout.write(f'- {category.name} (ID: {category.id})') + self.stdout.write(f'总计: {categories.count()} 个分类') diff --git a/src/blog/migrations/0002_auto_20231201_1200.py b/src/blog/migrations/0002_auto_20231201_1200.py new file mode 100644 index 0000000..92e4553 --- /dev/null +++ b/src/blog/migrations/0002_auto_20231201_1200.py @@ -0,0 +1,24 @@ +# Generated by Django + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='articleimage', + name='article', + field=models.ForeignKey( + blank=True, + null=True, + on_delete=models.deletion.CASCADE, + related_name='images', + to='blog.article' + ), + ), + ] diff --git a/src/blog/migrations/0007_articleimage.py b/src/blog/migrations/0007_articleimage.py new file mode 100644 index 0000000..f76e126 --- /dev/null +++ b/src/blog/migrations/0007_articleimage.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.14 on 2025-11-20 20:45 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0006_alter_blogsettings_options'), + ] + + operations = [ + migrations.CreateModel( + name='ArticleImage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('image', models.ImageField(upload_to='article_images/%Y/%m/%d/', verbose_name='图片')), + ('description', models.CharField(blank=True, max_length=255, verbose_name='图片描述')), + ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='blog.article')), + ], + options={ + 'verbose_name': '文章图片', + 'verbose_name_plural': '文章图片', + 'ordering': ['-created_time'], + }, + ), + ] diff --git a/src/blog/migrations/0008_merge_0002_auto_20231201_1200_0007_articleimage.py b/src/blog/migrations/0008_merge_0002_auto_20231201_1200_0007_articleimage.py new file mode 100644 index 0000000..919ad7b --- /dev/null +++ b/src/blog/migrations/0008_merge_0002_auto_20231201_1200_0007_articleimage.py @@ -0,0 +1,14 @@ +# Generated by Django 4.2.14 on 2025-11-20 22:28 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0002_auto_20231201_1200'), + ('blog', '0007_articleimage'), + ] + + operations = [ + ] diff --git a/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc index a3cf1b7..59a0595 100644 Binary files a/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc index 36df054..c23035a 100644 Binary files a/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc b/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc index 0a9fab9..d9da01e 100644 Binary files a/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc and b/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc index 04ad362..400aff8 100644 Binary files a/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc index a8d8413..bda38e6 100644 Binary files a/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc b/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc index 72f33bd..445077e 100644 Binary files a/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc and b/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/__init__.cpython-311.pyc b/src/blog/migrations/__pycache__/__init__.cpython-311.pyc index 91dfc28..1f277d9 100644 Binary files a/src/blog/migrations/__pycache__/__init__.cpython-311.pyc and b/src/blog/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/models.py b/src/blog/models.py index 09f3afe..d2a02a1 100644 --- a/src/blog/models.py +++ b/src/blog/models.py @@ -1,228 +1,123 @@ -""" -博客应用数据模型模块 - -该模块定义了DjangoBlog博客系统的核心数据模型,包括: -- 文章(Article) -- 分类(Category) -- 标签(Tag) -- 友情链接(Links) -- 侧边栏(SideBar) -- 博客设置(BlogSettings) -以及相关的基础模型和辅助类 -""" - -# ZY: 导入系统标准库 import logging import re from abc import abstractmethod -# WMW: 导入Django核心模块 from django.conf import settings from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ -# XJH: 导入第三方库 -from mdeditor.fields import MDTextField # Markdown编辑器字段 -from uuslug import slugify # URL友好的slug生成器 +from mdeditor.fields import MDTextField +from uuslug import slugify -# ZYG: 导入项目工具函数 from djangoblog.utils import cache_decorator, cache from djangoblog.utils import get_current_site -# CHY: 获取当前模块的日志记录器 logger = logging.getLogger(__name__) class LinkShowType(models.TextChoices): - """ - 链接显示类型枚举类 - 定义友情链接在不同页面的显示方式 - """ - # ZY: 首页显示 I = ('i', _('index')) - # WMW: 列表页显示 L = ('l', _('list')) - # XJH: 文章页显示 P = ('p', _('post')) - # ZYG: 所有页面显示 A = ('a', _('all')) - # CHY: 幻灯片显示 S = ('s', _('slide')) class BaseModel(models.Model): - """ - 基础模型类 - - 为所有模型提供公共字段和方法,包括主键、创建时间和修改时间 - """ - # ZY: 自增主键 id = models.AutoField(primary_key=True) - # WMW: 创建时间,默认为当前时间 creation_time = models.DateTimeField(_('creation time'), default=now) - # XJH: 最后修改时间,默认为当前时间 last_modify_time = models.DateTimeField(_('modify time'), default=now) def save(self, *args, **kwargs): - """ - 重写保存方法,处理特殊逻辑 - - 如果只是更新浏览量,则直接更新而不触发其他逻辑 - 否则自动生成slug并调用父类保存方法 - """ - # ZYG: 检查是否只是更新浏览量 is_update_views = isinstance( self, Article) and 'update_fields' in kwargs and kwargs['update_fields'] == ['views'] if is_update_views: - # CHY: 直接更新浏览量,避免触发其他逻辑 Article.objects.filter(pk=self.pk).update(views=self.views) else: - # ZY: 如果有slug字段,则自动生成slug if 'slug' in self.__dict__: - # WMW: 获取标题或名称用于生成slug slug = getattr( self, 'title') if 'title' in self.__dict__ else getattr( self, 'name') - # XJH: 使用uuslug生成URL友好的slug setattr(self, 'slug', slugify(slug)) - # ZYG: 调用父类保存方法 super().save(*args, **kwargs) def get_full_url(self): - """ - 获取对象的完整URL - - 返回: - str: 包含域名的完整URL - """ - # CHY: 获取当前站点域名 site = get_current_site().domain - # ZY: 构建完整URL url = "https://{site}{path}".format(site=site, path=self.get_absolute_url()) return url class Meta: - # WMW: 设置为抽象模型,不创建数据库表 abstract = True - # XJH: 声明抽象方法,子类必须实现 @abstractmethod def get_absolute_url(self): - """ - 获取对象的绝对URL路径 - - 返回: - str: URL路径 - """ pass class Article(BaseModel): - """ - 文章模型 - - 存储博客文章或页面内容,支持Markdown格式 - """ - # ZY: 文章状态选择 + """文章""" STATUS_CHOICES = ( - ('d', _('Draft')), # 草稿 - ('p', _('Published')), # 已发布 + ('d', _('Draft')), + ('p', _('Published')), ) - # WMW: 评论状态选择 COMMENT_STATUS = ( - ('o', _('Open')), # 开放评论 - ('c', _('Close')), # 关闭评论 + ('o', _('Open')), + ('c', _('Close')), ) - # XJH: 文章类型选择 TYPE = ( - ('a', _('Article')), # 文章 - ('p', _('Page')), # 页面 + ('a', _('Article')), + ('p', _('Page')), ) - # ZYG: 文章标题,唯一 title = models.CharField(_('title'), max_length=200, unique=True) - # CHY: 文章内容,使用Markdown编辑器字段 body = MDTextField(_('body')) - # ZY: 发布时间 pub_time = models.DateTimeField( _('publish time'), blank=False, null=False, default=now) - # WMW: 文章状态,默认为已发布 status = models.CharField( _('status'), max_length=1, choices=STATUS_CHOICES, default='p') - # XJH: 评论状态,默认为开放 comment_status = models.CharField( _('comment status'), max_length=1, choices=COMMENT_STATUS, default='o') - # ZYG: 文章类型,默认为文章 type = models.CharField(_('type'), max_length=1, choices=TYPE, default='a') - # CHY: 浏览量,默认为0 views = models.PositiveIntegerField(_('views'), default=0) - # ZY: 作者,外键关联用户模型 author = models.ForeignKey( settings.AUTH_USER_MODEL, verbose_name=_('author'), blank=False, null=False, on_delete=models.CASCADE) - # WMW: 文章排序,数字越大越靠前 article_order = models.IntegerField( _('order'), blank=False, null=False, default=0) - # XJH: 是否显示目录 show_toc = models.BooleanField(_('show toc'), blank=False, null=False, default=False) - # ZYG: 分类,外键关联分类模型 category = models.ForeignKey( 'Category', verbose_name=_('category'), on_delete=models.CASCADE, blank=False, null=False) - # CHY: 标签,多对多关系 tags = models.ManyToManyField('Tag', verbose_name=_('tag'), blank=True) def body_to_string(self): - """ - 获取文章内容字符串 - - 返回: - str: 文章内容 - """ return self.body def __str__(self): - """ - 文章的字符串表示 - - 返回: - str: 文章标题 - """ return self.title class Meta: - # ZY: 按文章排序和发布时间降序排列 ordering = ['-article_order', '-pub_time'] - # WMW: 模型的可读名称 verbose_name = _('article') - # XJH: 复数形式使用相同名称 verbose_name_plural = verbose_name - # ZYG: 指定latest()方法使用的字段 get_latest_by = 'id' def get_absolute_url(self): - """ - 获取文章的绝对URL - - 返回: - str: 文章详情URL - """ - # CHY: 使用年月日和ID构建URL return reverse('blog:detailbyid', kwargs={ 'article_id': self.id, 'year': self.creation_time.year, @@ -232,90 +127,43 @@ class Article(BaseModel): @cache_decorator(60 * 60 * 10) def get_category_tree(self): - """ - 获取文章分类树(带缓存) - - 返回: - list: 分类名称和URL的元组列表 - """ - # ZY: 获取分类树 tree = self.category.get_category_tree() - # WMW: 将分类转换为名称和URL的元组列表 names = list(map(lambda c: (c.name, c.get_absolute_url()), tree)) return names def save(self, *args, **kwargs): - """ - 重写保存方法,调用父类方法 - """ - # XJH: 调用父类保存方法 super().save(*args, **kwargs) def viewed(self): - """ - 增加文章浏览量 - """ - # ZYG: 增加浏览量 self.views += 1 - # CHY: 只更新浏览量字段 self.save(update_fields=['views']) def comment_list(self): - """ - 获取文章评论列表(带缓存) - - 返回: - QuerySet: 已启用的评论列表 - """ - # ZY: 生成缓存键 cache_key = 'article_comments_{id}'.format(id=self.id) - # WMW: 尝试从缓存获取评论 value = cache.get(cache_key) if value: logger.info('get article comments:{id}'.format(id=self.id)) return value else: - # XJH: 从数据库获取已启用的评论 comments = self.comment_set.filter(is_enable=True).order_by('-id') - # ZYG: 设置缓存 cache.set(cache_key, comments, 60 * 100) logger.info('set article comments:{id}'.format(id=self.id)) return comments def get_admin_url(self): - """ - 获取文章管理页面URL - - 返回: - str: 文章编辑页面URL - """ - # CHY: 获取应用标签和模型名 info = (self._meta.app_label, self._meta.model_name) - # ZY: 构建管理页面URL return reverse('admin:%s_%s_change' % info, args=(self.pk,)) @cache_decorator(expiration=60 * 100) def next_article(self): - """ - 获取下一篇文章(带缓存) - - 返回: - Article|None: 下一篇文章对象或None - """ - # WMW: 获取ID大于当前文章的已发布文章 + # 下一篇 return Article.objects.filter( id__gt=self.id, status='p').order_by('id').first() @cache_decorator(expiration=60 * 100) def prev_article(self): - """ - 获取上一篇文章(带缓存) - - 返回: - Article|None: 上一篇文章对象或None - """ - # XJH: 获取ID小于当前文章的已发布文章 + # 前一篇 return Article.objects.filter(id__lt=self.id, status='p').first() def get_first_image_url(self): @@ -456,6 +304,22 @@ class SideBar(models.Model): return self.name +class ArticleImage(models.Model): + """文章图片模型""" + article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='images', null=True, blank=True) + image = models.ImageField(_('图片'), upload_to='images/') + description = models.CharField(_('图片描述'), max_length=255, blank=True) + created_time = models.DateTimeField(_('创建时间'), auto_now_add=True) + + class Meta: + verbose_name = _('文章图片') + verbose_name_plural = verbose_name + ordering = ['-created_time'] + + def __str__(self): + return f"{self.article.title} - {self.image.name}" + + class BlogSettings(models.Model): """blog的配置""" site_name = models.CharField( diff --git a/src/blog/static/blog/css/custom-style.css b/src/blog/static/blog/css/custom-style.css new file mode 100644 index 0000000..c9885a7 --- /dev/null +++ b/src/blog/static/blog/css/custom-style.css @@ -0,0 +1,91 @@ + +/* 自定义样式 - 修改导航栏背景色和按钮样式 */ + +/* 导航栏背景色改为天蓝色 */ +.main-navigation { + background: linear-gradient(to right, #2e9ac5, #66b8db) !important; +} + +/* 文章标题链接样式 - 去掉蓝色按钮效果 */ +.entry-title a { + color: #2c3e50 !important; + text-decoration: none !important; + background: none !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; +} + +.entry-title a:hover { + color: #3498db !important; + text-decoration: underline !important; + background: none !important; +} + +/* 侧边栏链接样式 - 去掉蓝色按钮效果 */ +.widget a { + color: #34495e !important; + text-decoration: none !important; + background: none !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; +} + +.widget a:hover { + color: #3498db !important; + text-decoration: underline !important; + background: none !important; +} + +/* 文章阅读更多链接 - 去掉蓝色按钮效果 */ +.read-more { + background: none !important; + color: #3498db !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; + text-decoration: underline !important; +} + +.read-more:hover { + background: none !important; + color: #2980b9 !important; + transform: none !important; + box-shadow: none !important; +} + +/* 文章链接 - 去掉蓝色按钮效果 */ +a[href*="/p/"], +a[href*="/article/"] { + background: none !important; + color: #3498db !important; + padding: 0 !important; + border-radius: 0 !important; + box-shadow: none !important; + text-decoration: underline !important; + margin: 0 !important; +} + +a[href*="/p/"]:hover, +a[href*="/article/"]:hover { + background: none !important; + color: #2980b9 !important; + transform: none !important; + box-shadow: none !important; +} + +/* 背景图片样式 */ +body { + background-color: #f8f9fa; + background-image: url('/static/blog/img/default_bg.jpg'); + background-size: cover; + background-position: center; + background-attachment: fixed; + background-repeat: no-repeat; +} + +/* 网站容器样式,确保背景图片可见 */ +.site { + background-color: rgba(255, 255, 255, 0.9); +} diff --git a/src/blog/static/blog/css/icons.css b/src/blog/static/blog/css/icons.css new file mode 100644 index 0000000..9a8e570 --- /dev/null +++ b/src/blog/static/blog/css/icons.css @@ -0,0 +1,90 @@ + +/* 简单的图标样式 */ + +/* 图标基础样式 */ +[class^="icon-"], [class*=" icon-"] { + display: inline-block; + width: 1em; + height: 1em; + margin-right: 0.2em; + line-height: 1; + font-style: normal; + font-weight: normal; + text-align: center; + text-decoration: inherit; + text-transform: none; + speak: none; +} + +/* 文件夹图标 */ +.icon-folder:before { + content: "📁"; +} + +/* 标签图标 */ +.icon-tag:before { + content: "🏷️"; +} + +/* 评论图标 */ +.icon-comment:before { + content: "💬"; +} + +/* 搜索图标 */ +#searchform input[type="submit"]:before { + content: "🔍"; + margin-right: 0.25em; +} + +/* 首页图标 */ +#menu-item-3498 a:before { + content: "🏠"; + margin-right: 0.25em; +} + +/* 归档图标 */ +.menu-item a[href*="archives"]:before { + content: "📚"; + margin-right: 0.25em; +} + +/* 管理站点图标 */ +.menu-item a[href*="admin"]:before { + content: "⚙️"; + margin-right: 0.25em; +} + +/* 登录/登出图标 */ +.menu-item a[href*="login"]:before { + content: "🔑"; + margin-right: 0.25em; +} + +.menu-item a[href*="logout"]:before { + content: "🚪"; + margin-right: 0.25em; +} + +/* 发布文章图标 */ +.menu-item a[href*="create"]:before { + content: "✍️"; + margin-right: 0.25em; +} + +/* 我的文章图标 */ +.menu-item a[href*="my_articles"]:before { + content: "📝"; + margin-right: 0.25em; +} + +/* 返回顶部按钮 */ +#rocket:before { + content: "⬆️"; + font-size: 1.5rem; +} + +/* 背景切换按钮 */ +.bg-toggle-btn i { + font-size: 1.5rem; +} diff --git a/src/blog/static/blog/css/modern-style.css b/src/blog/static/blog/css/modern-style.css new file mode 100644 index 0000000..294130d --- /dev/null +++ b/src/blog/static/blog/css/modern-style.css @@ -0,0 +1,968 @@ + +/* 现代化博客样式 - 保持原有布局但提升视觉效果 */ + +/* 全局样式优化 */ +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + color: #333; + line-height: 1.6; + background-color: #f8f9fa; +} + +/* 网站容器优化 */ +.site { + max-width: 1200px; + margin: 2rem auto; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); + overflow: hidden; +} + +/* 网站头部优化 */ +.site-header { + background: linear-gradient(to bottom, #fff, #f8f9fa); + padding: 1.5rem 0; + border-bottom: 1px solid #eee; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); +} + +.site-title a { + font-size: 2.2rem; + font-weight: 700; + color: #2c3e50; + text-decoration: none; + transition: color 0.3s ease; + display: inline-block; + position: relative; +} + +.site-title a::after { + content: ''; + position: absolute; + bottom: -5px; + left: 0; + width: 0; + height: 3px; + background: linear-gradient(to right, #3498db, #2980b9); + transition: width 0.3s ease; +} + +.site-title a:hover { + color: #3498db; +} + +.site-title a:hover::after { + width: 100%; +} + +.site-description { + color: #7f8c8d; + font-size: 1.1rem; + margin-top: 0.5rem; + font-style: italic; +} + +/* 导航栏优化 */ +.main-navigation { + margin-top: 1rem; + background: linear-gradient(to right, #34495e, #2c3e50); + padding: 0; + border-radius: 6px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12); + position: relative; + overflow: hidden; +} + +.main-navigation::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(to right, #3498db, #2980b9); + box-shadow: 0 2px 4px rgba(52, 152, 219, 0.3); +} + +.main-navigation::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 1px; + background: linear-gradient(to right, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)); +} + +.main-navigation ul { + display: flex; + justify-content: center; + list-style: none; + margin: 0; + padding: 0; +} + +.main-navigation li { + position: relative; + margin: 0; +} + +.main-navigation a { + color: #ecf0f1; + text-decoration: none; + font-weight: 500; + padding: 0.9rem 1.2rem; + display: block; + transition: all 0.3s ease; + position: relative; + overflow: hidden; +} + +.main-navigation a::before { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + width: 0; + height: 3px; + background: linear-gradient(to right, #3498db, #2980b9); + transform: translateX(-50%); + transition: width 0.3s ease; +} + +.main-navigation a:hover::before { + width: 80%; +} + +.main-navigation a::after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + background-color: rgba(255, 255, 255, 0.1); + border-radius: 50%; + transform: translate(-50%, -50%); + transition: width 0.6s ease, height 0.6s ease; +} + +.main-navigation a:hover::after { + width: 100px; + height: 100px; +} + +.main-navigation a:hover { + color: #fff; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +/* 当前活动菜单项 */ +.main-navigation .current-menu-item > a, +.main-navigation .current_page_item > a { + color: #fff; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +.main-navigation .current-menu-item > a::before, +.main-navigation .current_page_item > a::before { + width: 80%; +} + +/* 下拉菜单样式 */ +.main-navigation .sub-menu { + position: absolute; + top: 100%; + left: 0; + background: linear-gradient(to bottom, #34495e, #2c3e50); + min-width: 220px; + opacity: 0; + visibility: hidden; + transform: translateY(15px); + transition: all 0.3s ease; + z-index: 1000; + border-radius: 0 0 6px 6px; + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); +} + +.main-navigation li:hover > .sub-menu { + opacity: 1; + visibility: visible; + transform: translateY(0); +} + +.main-navigation .sub-menu li { + width: 100%; + position: relative; +} + +.main-navigation .sub-menu a { + padding: 0.8rem 1.2rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); +} + +.main-navigation .sub-menu li:last-child a { + border-bottom: none; +} + +.main-navigation .sub-menu a::before { + content: ''; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 4px; + background: linear-gradient(to bottom, #3498db, #2980b9); + transform: scaleY(0); + transition: transform 0.3s ease; +} + +.main-navigation .sub-menu a:hover::before { + transform: scaleY(1); +} + +/* 移动端菜单按钮 */ +.menu-toggle { + display: none; + background-color: #34495e; + color: #ecf0f1; + padding: 0.75rem 1rem; + border: none; + border-radius: 4px; + cursor: pointer; + font-weight: 500; + margin: 1rem auto; + transition: all 0.3s ease; + position: relative; + overflow: hidden; +} + +.menu-toggle::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.1), transparent); + transition: left 0.5s ease; +} + +.menu-toggle:hover::before { + left: 100%; +} + +.menu-toggle:hover { + background-color: #3498db; +} + +/* 主内容区域优化 */ +#main { + display: flex; + flex-wrap: wrap; + padding: 2rem; +} + +#primary { + flex: 2; + padding-right: 2rem; +} + +#secondary { + flex: 1; +} + +/* 文章卡片样式 */ +article.post { + margin-bottom: 2rem; + background: #fff; + border-radius: 8px; + overflow: hidden; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +article.post:hover { + transform: translateY(-5px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1); +} + +.entry-header { + padding: 1.5rem 1.5rem 0; +} + +/* 文章顶部元信息 */ +.article-meta-top { + display: flex; + align-items: center; + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid #eee; +} + +.author-avatar { + margin-right: 1rem; +} + +.author-avatar img { + width: 50px; + height: 50px; + border-radius: 50%; + object-fit: cover; +} + +.author-info { + flex: 1; +} + +.author-name { + font-weight: 600; + color: #2c3e50; + display: block; +} + +.post-date { + font-size: 0.9rem; + color: #7f8c8d; +} + +.post-views { + font-size: 0.9rem; + color: #7f8c8d; +} + +/* 文章标题 */ +.entry-title { + font-size: 1.5rem; + font-weight: 600; + line-height: 1.3; + margin-bottom: 1rem; +} + +.pin-indicator { + color: #e74c3c; + font-weight: 600; +} + +.entry-title a { + color: #2c3e50; + text-decoration: none; + transition: color 0.3s ease; +} + +.entry-title a:hover { + color: #3498db; +} + +/* 面包屑导航 */ +.breadcrumb { + margin-bottom: 1rem; + font-size: 0.9rem; + color: #7f8c8d; +} + +.breadcrumb a { + color: #3498db; + text-decoration: none; +} + +.breadcrumb a:hover { + text-decoration: underline; +} + +/* 文章元信息 */ +.article-meta { + display: flex; + flex-wrap: wrap; + margin-bottom: 1rem; + font-size: 0.9rem; + color: #7f8c8d; +} + +.article-meta span { + margin-right: 1rem; + margin-bottom: 0.5rem; +} + +.article-meta a { + color: #3498db; + text-decoration: none; +} + +.article-meta a:hover { + text-decoration: underline; +} + +/* 文章内容 */ +.entry-content { + padding: 0 1.5rem 1.5rem; + font-size: 1rem; + line-height: 1.7; +} + +.article-summary { + margin-bottom: 1rem; +} + +.read-more-container { + text-align: right; + margin-top: 1.5rem; +} + +.read-more { + display: inline-flex; + align-items: center; + justify-content: center; + background: linear-gradient(to right, #3498db, #2980b9); + color: #fff; + padding: 0.6rem 1.2rem; + border-radius: 30px; + text-decoration: none; + font-weight: 500; + font-size: 0.9rem; + transition: all 0.3s ease; + box-shadow: 0 2px 5px rgba(52, 152, 219, 0.3); + position: relative; + overflow: hidden; +} + +.read-more::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: left 0.6s ease; +} + +.read-more:hover::before { + left: 100%; +} + +.read-more:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(52, 152, 219, 0.4); +} + +.read-more .arrow { + margin-left: 0.5rem; + font-weight: bold; + transition: transform 0.3s ease; +} + +.read-more:hover .arrow { + transform: translateX(3px); +} + +/* 统一所有阅读更多链接的样式 */ +a[href*="/p/"], +a[href*="/article/"] { + display: inline-flex; + align-items: center; + justify-content: center; + background: linear-gradient(to right, #3498db, #2980b9); + color: #fff; + padding: 0.6rem 1.2rem; + border-radius: 30px; + text-decoration: none; + font-weight: 500; + font-size: 0.9rem; + transition: all 0.3s ease; + box-shadow: 0 2px 5px rgba(52, 152, 219, 0.3); + position: relative; + overflow: hidden; + margin: 0.5rem 0; +} + +a[href*="/p/"]::before, +a[href*="/article/"]::before { + content: ''; + position: absolute; + top: 0; + left: -100%; + width: 100%; + height: 100%; + background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.2), transparent); + transition: left 0.6s ease; +} + +a[href*="/p/"]:hover::before, +a[href*="/article/"]:hover::before { + left: 100%; +} + +a[href*="/p/"]:hover, +a[href*="/article/"]:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(52, 152, 219, 0.4); + color: #fff; +} + +/* 目录样式 */ +.toc-container { + background-color: #f8f9fa; + border-radius: 6px; + padding: 1rem; + margin-bottom: 1.5rem; +} + +.toc-title { + font-size: 1.1rem; + font-weight: 600; + margin-top: 0; + margin-bottom: 0.75rem; + color: #2c3e50; +} + +.toc-content ul { + padding-left: 1.5rem; + margin: 0; +} + +.toc-content li { + margin-bottom: 0.25rem; +} + +.toc-content a { + color: #34495e; + text-decoration: none; +} + +.toc-content a:hover { + color: #3498db; +} + +/* 文章内容区域 */ +.article-content { + margin-top: 1.5rem; +} + +/* 文章页脚 */ +.entry-footer { + padding: 0 1.5rem 1.5rem; + border-top: 1px solid #eee; + margin-top: 1.5rem; +} + +/* 侧边栏样式 */ +.widget-area { + padding-left: 1rem; +} + +.widget { + background: #fff; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1.5rem; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); +} + +.widget-title { + font-size: 1.1rem; + font-weight: 600; + color: #2c3e50; + margin-bottom: 1rem; + padding-bottom: 0.5rem; + border-bottom: 2px solid #3498db; +} + +.widget ul { + list-style: none; + padding: 0; + margin: 0; +} + +.widget li { + padding: 0.5rem 0; + border-bottom: 1px solid #eee; +} + +.widget li:last-child { + border-bottom: none; +} + +.widget a { + color: #34495e; + text-decoration: none; + transition: color 0.3s ease; +} + +.widget a:hover { + color: #3498db; +} + +/* 搜索框样式 */ +#searchform { + display: flex; +} + +#searchform input[type="text"] { + flex: 1; + padding: 0.75rem; + border: 1px solid #ddd; + border-radius: 4px 0 0 4px; + font-size: 0.9rem; +} + +#searchform input[type="submit"] { + background-color: #3498db; + color: #fff; + border: none; + padding: 0 1rem; + border-radius: 0 4px 4px 0; + cursor: pointer; + transition: background-color 0.3s ease; +} + +#searchform input[type="submit"]:hover { + background-color: #2980b9; +} + +/* 标签云样式 */ +.tagcloud a { + display: inline-block; + margin: 0.25rem; + padding: 0.25rem 0.5rem; + background-color: #f1f2f6; + color: #34495e; + border-radius: 4px; + text-decoration: none; + transition: all 0.3s ease; +} + +.tagcloud a:hover { + background-color: #3498db; + color: #fff; +} + +/* 评论区域样式 */ +.comments-area { + margin-top: 2rem; + padding: 1.5rem; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); +} + +.comment-list { + padding: 0; + list-style: none; +} + +.comment { + margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid #eee; +} + +.comment:last-child { + border-bottom: none; +} + +.comment-author { + font-weight: 600; + color: #2c3e50; +} + +.comment-meta { + font-size: 0.8rem; + color: #7f8c8d; + margin-bottom: 0.5rem; +} + +/* 页脚样式 */ +footer[role="contentinfo"] { + background-color: #34495e; + color: #ecf0f1; + padding: 2rem; + text-align: center; + margin-top: 2rem; +} + +footer[role="contentinfo"] a { + color: #3498db; + text-decoration: none; + transition: color 0.3s ease; +} + +footer[role="contentinfo"] a:hover { + color: #5dade2; +} + +/* 归档页面样式 */ +.archive-header { + text-align: center; + margin-bottom: 2rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.archive-title { + font-size: 2rem; + font-weight: 600; + color: #2c3e50; + margin-bottom: 0.5rem; +} + +.archive-title .icon-folder { + margin-right: 0.5rem; +} + +.archive-description { + font-size: 1rem; + color: #7f8c8d; +} + +.archive-content { + padding: 1rem 0; +} + +/* 时间轴样式 */ +.timeline-container { + position: relative; + padding: 1rem 0; +} + +.timeline-container::before { + content: ''; + position: absolute; + left: 30px; + top: 0; + bottom: 0; + width: 3px; + background: linear-gradient(to bottom, #3498db, #2980b9); + border-radius: 3px; +} + +.timeline-year { + margin-bottom: 2rem; +} + +.year-title { + position: relative; + display: flex; + align-items: center; + margin-bottom: 1.5rem; + padding-left: 60px; +} + +.year-badge { + position: absolute; + left: 0; + display: flex; + align-items: center; + justify-content: center; + width: 60px; + height: 60px; + background-color: #3498db; + color: #fff; + font-size: 1.2rem; + font-weight: 600; + border-radius: 50%; + box-shadow: 0 3px 10px rgba(52, 152, 219, 0.3); + z-index: 1; +} + +.year-text { + font-size: 1.5rem; + font-weight: 600; + color: #2c3e50; + margin-right: 0.5rem; +} + +.article-count { + font-size: 0.9rem; + color: #7f8c8d; + background-color: #f8f9fa; + padding: 0.2rem 0.5rem; + border-radius: 12px; +} + +.timeline-months { + padding-left: 60px; +} + +.timeline-month { + margin-bottom: 1.5rem; +} + +.month-title { + position: relative; + display: flex; + align-items: center; + margin-bottom: 1rem; +} + +.month-badge { + position: absolute; + left: -45px; + display: flex; + align-items: center; + justify-content: center; + width: 30px; + height: 30px; + background-color: #2ecc71; + color: #fff; + font-size: 0.9rem; + font-weight: 600; + border-radius: 50%; + box-shadow: 0 2px 6px rgba(46, 204, 113, 0.3); + z-index: 1; +} + +.month-text { + font-size: 1.1rem; + font-weight: 600; + color: #2c3e50; + margin-right: 0.5rem; +} + +.timeline-articles { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); + gap: 1rem; +} + +.archive-article { + display: flex; + background: #fff; + border-radius: 8px; + padding: 1rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.archive-article:hover { + transform: translateY(-5px); + box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1); +} + +.article-date { + margin-right: 1rem; +} + +.day { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + background-color: #f1f2f6; + color: #2c3e50; + font-size: 1.1rem; + font-weight: 600; + border-radius: 50%; +} + +.article-content { + flex: 1; +} + +.article-title { + margin: 0 0 0.5rem; + font-size: 1rem; + font-weight: 600; +} + +.article-title a { + color: #2c3e50; + text-decoration: none; + transition: color 0.3s ease; +} + +.article-title a:hover { + color: #3498db; +} + +.article-meta { + display: flex; + font-size: 0.8rem; + color: #7f8c8d; +} + +.article-meta .category { + margin-right: 1rem; +} + +.article-meta a { + color: #3498db; + text-decoration: none; +} + +.article-meta a:hover { + text-decoration: underline; +} + +/* 返回顶部按钮 */ +#rocket { + position: fixed; + bottom: 2rem; + right: 2rem; + width: 3rem; + height: 3rem; + background-color: #3498db; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + cursor: pointer; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + transition: all 0.3s ease; + opacity: 0; + visibility: hidden; +} + +#rocket.show { + opacity: 1; + visibility: visible; +} + +#rocket:hover { + background-color: #2980b9; + transform: translateY(-5px); +} + +#rocket::before { + content: "↑"; + font-size: 1.5rem; +} + +/* 响应式设计 */ +@media screen and (max-width: 992px) { + #main { + flex-direction: column; + } + + #primary { + padding-right: 0; + margin-bottom: 2rem; + } + + .widget-area { + padding-left: 0; + } +} + +@media screen and (max-width: 768px) { + .site { + margin: 0; + border-radius: 0; + box-shadow: none; + } + + .main-navigation ul { + flex-wrap: wrap; + } + + .main-navigation li { + margin: 0.25rem; + } + + #primary, #secondary { + padding: 0 1rem; + } +} diff --git a/src/blog/static/blog/img/default_bg.jpg b/src/blog/static/blog/img/default_bg.jpg new file mode 100644 index 0000000..9641824 Binary files /dev/null and b/src/blog/static/blog/img/default_bg.jpg differ diff --git a/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc b/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc index 3889cef..7684a22 100644 Binary files a/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc b/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc index 0edc96f..98a0101 100644 Binary files a/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc and b/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc differ diff --git a/src/blog/urls.py b/src/blog/urls.py index adf2703..02d8d4b 100644 --- a/src/blog/urls.py +++ b/src/blog/urls.py @@ -2,6 +2,10 @@ from django.urls import path from django.views.decorators.cache import cache_page from . import views +from . import article_views +from .article_views_new import ArticleCreateView, ArticleUpdateView +from .article_delete_view import ArticleDeleteView +from . import image_views app_name = "blog" urlpatterns = [ @@ -17,6 +21,22 @@ urlpatterns = [ r'article////.html', views.ArticleDetailView.as_view(), name='detailbyid'), + path( + r'article/create/', + ArticleCreateView.as_view(), + name='article_create'), + path( + r'article/edit//', + ArticleUpdateView.as_view(), + name='article_edit'), + path( + r'article/delete//', + ArticleDeleteView.as_view(), + name='article_delete'), + path( + r'my-articles/', + views.my_articles, + name='my_articles'), path( r'category/.html', views.CategoryDetailView.as_view(), @@ -59,4 +79,17 @@ urlpatterns = [ r'clean', views.clean_cache_view, name='clean'), + # 图片相关路由 + path( + 'article//upload-image/', + image_views.ImageUploadView.as_view(), + name='upload_image'), + path( + 'markdown-image-upload/', + image_views.markdown_image_upload, + name='markdown_image_upload'), + path( + 'image//delete/', + image_views.ImageDeleteView.as_view(), + name='delete_image'), ] diff --git a/src/blog/views.py b/src/blog/views.py index 773bb75..c86c27f 100644 --- a/src/blog/views.py +++ b/src/blog/views.py @@ -150,6 +150,11 @@ class ArticleDetailView(DetailView): kwargs['next_article'] = self.object.next_article kwargs['prev_article'] = self.object.prev_article + # 获取文章关联的图片 + from .models import ArticleImage + article_images = ArticleImage.objects.filter(article=self.object) + kwargs['article_images'] = article_images + context = super(ArticleDetailView, self).get_context_data(**kwargs) article = self.object @@ -378,3 +383,102 @@ def permission_denied_view( def clean_cache_view(request): cache.clear() return HttpResponse('ok') + + +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect +from django.views.generic.edit import CreateView, UpdateView +from django.urls import reverse_lazy +from .forms import ArticleForm + + +class ArticleCreateView(LoginRequiredMixin, CreateView): + """创建文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_create.html' + + def form_valid(self, form): + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + form.instance.category = category + + # 处理标签 + tags_str = form.cleaned_data['tags'] + if tags_str: + tag_names = [tag.strip() for tag in tags_str.split(',') if tag.strip()] + form.instance.save() # 保存文章实例,以便可以添加多对多关系 + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + + # 先保存文章,以便可以关联图片 + response = super().form_valid(form) + + # 将临时图片关联到新创建的文章 + from .models import ArticleImage + # 获取会话中的临时图片ID列表 + temp_image_ids = self.request.session.get('temp_image_ids', []) + + # 查找这些临时图片 + temp_images = ArticleImage.objects.filter(id__in=temp_image_ids) + + # 将这些图片关联到新创建的文章 + for image in temp_images: + image.article = form.instance + image.save() + + # 清除会话中的临时图片ID列表 + self.request.session['temp_image_ids'] = [] + self.request.session.modified = True + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +class ArticleUpdateView(LoginRequiredMixin, UpdateView): + """更新文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_edit.html' + pk_url_kwarg = 'article_id' + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以编辑 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +@login_required +def my_articles(request): + """显示当前用户的文章列表""" + articles = Article.objects.filter(author=request.user) + return render(request, 'blog/my_articles.html', {'articles': articles}) diff --git a/src/comments/__pycache__/__init__.cpython-311.pyc b/src/comments/__pycache__/__init__.cpython-311.pyc index 728d159..f40d412 100644 Binary files a/src/comments/__pycache__/__init__.cpython-311.pyc and b/src/comments/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/__pycache__/admin.cpython-311.pyc b/src/comments/__pycache__/admin.cpython-311.pyc index ab8ac24..3acb128 100644 Binary files a/src/comments/__pycache__/admin.cpython-311.pyc and b/src/comments/__pycache__/admin.cpython-311.pyc differ diff --git a/src/comments/__pycache__/apps.cpython-311.pyc b/src/comments/__pycache__/apps.cpython-311.pyc index 643ad39..54dd92f 100644 Binary files a/src/comments/__pycache__/apps.cpython-311.pyc and b/src/comments/__pycache__/apps.cpython-311.pyc differ diff --git a/src/comments/__pycache__/forms.cpython-311.pyc b/src/comments/__pycache__/forms.cpython-311.pyc index 76e09d5..21e360d 100644 Binary files a/src/comments/__pycache__/forms.cpython-311.pyc and b/src/comments/__pycache__/forms.cpython-311.pyc differ diff --git a/src/comments/__pycache__/models.cpython-311.pyc b/src/comments/__pycache__/models.cpython-311.pyc index ae6d064..bda00d9 100644 Binary files a/src/comments/__pycache__/models.cpython-311.pyc and b/src/comments/__pycache__/models.cpython-311.pyc differ diff --git a/src/comments/__pycache__/urls.cpython-311.pyc b/src/comments/__pycache__/urls.cpython-311.pyc index 1989e5a..a16fbb7 100644 Binary files a/src/comments/__pycache__/urls.cpython-311.pyc and b/src/comments/__pycache__/urls.cpython-311.pyc differ diff --git a/src/comments/__pycache__/utils.cpython-311.pyc b/src/comments/__pycache__/utils.cpython-311.pyc index 368d9e1..f605c36 100644 Binary files a/src/comments/__pycache__/utils.cpython-311.pyc and b/src/comments/__pycache__/utils.cpython-311.pyc differ diff --git a/src/comments/__pycache__/views.cpython-311.pyc b/src/comments/__pycache__/views.cpython-311.pyc index 3b9cd58..7e92b0e 100644 Binary files a/src/comments/__pycache__/views.cpython-311.pyc and b/src/comments/__pycache__/views.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc index 2679ff5..d326f3f 100644 Binary files a/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc b/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc index 7ff0895..e58b409 100644 Binary files a/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc and b/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc b/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc index 97f76df..1910aab 100644 Binary files a/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc and b/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/__init__.cpython-311.pyc b/src/comments/migrations/__pycache__/__init__.cpython-311.pyc index 4902e16..687d8d6 100644 Binary files a/src/comments/migrations/__pycache__/__init__.cpython-311.pyc and b/src/comments/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc b/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc index 3fb7b3c..939302c 100644 Binary files a/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc b/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc index d2f2e94..5c33098 100644 Binary files a/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc and b/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/__init__.cpython-311.pyc b/src/djangoblog/__pycache__/__init__.cpython-311.pyc index ca737f1..ee001ff 100644 Binary files a/src/djangoblog/__pycache__/__init__.cpython-311.pyc and b/src/djangoblog/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/admin_site.cpython-311.pyc b/src/djangoblog/__pycache__/admin_site.cpython-311.pyc index bedc2bd..8d8bc3b 100644 Binary files a/src/djangoblog/__pycache__/admin_site.cpython-311.pyc and b/src/djangoblog/__pycache__/admin_site.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/apps.cpython-311.pyc b/src/djangoblog/__pycache__/apps.cpython-311.pyc index 04dd331..d7ff124 100644 Binary files a/src/djangoblog/__pycache__/apps.cpython-311.pyc and b/src/djangoblog/__pycache__/apps.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc b/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc index a57555a..055fa7c 100644 Binary files a/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc and b/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc b/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc index a7adca7..7446502 100644 Binary files a/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc and b/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/feeds.cpython-311.pyc b/src/djangoblog/__pycache__/feeds.cpython-311.pyc index 045476a..58b3fb1 100644 Binary files a/src/djangoblog/__pycache__/feeds.cpython-311.pyc and b/src/djangoblog/__pycache__/feeds.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc b/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc index 42131af..37f32b0 100644 Binary files a/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc and b/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/settings.cpython-311.pyc b/src/djangoblog/__pycache__/settings.cpython-311.pyc index 521fefa..bfd61ad 100644 Binary files a/src/djangoblog/__pycache__/settings.cpython-311.pyc and b/src/djangoblog/__pycache__/settings.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/sitemap.cpython-311.pyc b/src/djangoblog/__pycache__/sitemap.cpython-311.pyc index 527cd15..7f12927 100644 Binary files a/src/djangoblog/__pycache__/sitemap.cpython-311.pyc and b/src/djangoblog/__pycache__/sitemap.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc b/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc index 3137872..1166940 100644 Binary files a/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc and b/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/urls.cpython-311.pyc b/src/djangoblog/__pycache__/urls.cpython-311.pyc index 2a9f10a..d395989 100644 Binary files a/src/djangoblog/__pycache__/urls.cpython-311.pyc and b/src/djangoblog/__pycache__/urls.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/utils.cpython-311.pyc b/src/djangoblog/__pycache__/utils.cpython-311.pyc index 5da0bed..0efe4f3 100644 Binary files a/src/djangoblog/__pycache__/utils.cpython-311.pyc and b/src/djangoblog/__pycache__/utils.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc b/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc index 63db9a9..1e20a3d 100644 Binary files a/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc and b/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/wsgi.cpython-311.pyc b/src/djangoblog/__pycache__/wsgi.cpython-311.pyc index bed74b9..8960d76 100644 Binary files a/src/djangoblog/__pycache__/wsgi.cpython-311.pyc and b/src/djangoblog/__pycache__/wsgi.cpython-311.pyc differ diff --git a/src/djangoblog/admin_site.py b/src/djangoblog/admin_site.py index 944d290..f120405 100644 --- a/src/djangoblog/admin_site.py +++ b/src/djangoblog/admin_site.py @@ -18,10 +18,6 @@ from servermanager.models import * class DjangoBlogAdminSite(AdminSite): - - """ - DjangoBlogAdminSite类继承自AdminSite,用于自定义Django管理站点的行为和外观。 - """ site_header = 'djangoblog administration' site_title = 'djangoblog site admin' @@ -29,7 +25,7 @@ class DjangoBlogAdminSite(AdminSite): super().__init__(name) def has_permission(self, request): - return request.user.is_superuser + return request.user.is_superuser # def get_urls(self): # urls = super().get_urls() diff --git a/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc index a71c305..c5c93a0 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc index d7df3d0..787d3ec 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc index ad65b89..fa8ce2d 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc index 8a03a33..c460d9c 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc differ diff --git a/src/djangoblog/settings.py b/src/djangoblog/settings.py index 39278b6..f74a69f 100644 --- a/src/djangoblog/settings.py +++ b/src/djangoblog/settings.py @@ -1,554 +1,447 @@ """ -DjangoBlog项目设置配置模块 +Django settings for djangoblog project. -该模块定义了DjangoBlog项目的所有配置参数,包括数据库设置、 -中间件配置、静态文件处理、缓存设置、邮件配置、日志配置等。 +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/ """ -# ZY: 导入必要的系统模块和Django模块 import os import sys from pathlib import Path -# ZY: 导入Django国际化支持模块 from django.utils.translation import gettext_lazy as _ -# ZY: 环境变量转布尔值的辅助函数 def env_to_bool(env, default): - # ZY: 获取环境变量值 str_val = os.environ.get(env) - # ZY: 如果环境变量不存在则返回默认值,否则根据字符串值判断布尔值 return default if str_val is None else str_val == 'True' -# WMW: 项目根目录路径配置 # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent -# WMW: 快速开发设置 - 不适合生产环境 # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ -# XJH: 安全警告:生产环境中必须保持密钥安全! # 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' -# XJH: 安全警告:生产环境中不要开启调试模式! # SECURITY WARNING: don't run with debug turned on in production! DEBUG = env_to_bool('DJANGO_DEBUG', True) # DEBUG = False -# ZYG: 判断是否在测试环境 TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test' -# ZY: 允许的主机列表 # ALLOWED_HOSTS = [] ALLOWED_HOSTS = ['*', '127.0.0.1', 'example.com'] -# CHY: Django 4.0新增配置,用于CSRF信任源 # django 4.0新增配置 CSRF_TRUSTED_ORIGINS = ['http://example.com'] -# WMW: 应用程序定义 # Application definition INSTALLED_APPS = [ - # ZY: 使用简化版管理配置,避免与自定义管理站点冲突 # 'django.contrib.admin', 'django.contrib.admin.apps.SimpleAdminConfig', - # ZY: Django核心应用 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - # XJH: 站点地图和站点管理应用 'django.contrib.sites', 'django.contrib.sitemaps', - # ZYG: 第三方应用 - 'mdeditor', # Markdown编辑器 - 'haystack', # 全文搜索框架 - # CHY: 项目自定义应用 - 'blog', # 博客核心应用 - 'accounts', # 用户账户管理 - 'comments', # 评论系统 - 'oauth', # OAuth认证 - 'servermanager', # 服务器管理 - 'owntracks', # 位置追踪 - # ZY: 静态文件压缩 + 'mdeditor', + 'haystack', + 'blog', + 'accounts', + 'comments', + 'oauth', + 'servermanager', + 'owntracks', 'compressor', - # WMW: 项目主应用 'djangoblog' ] -# XJH: 中间件配置,按执行顺序排列 MIDDLEWARE = [ - # ZY: 安全中间件,提供各种安全保护 'django.middleware.security.SecurityMiddleware', - # WMW: 会话中间件,处理用户会话 'django.contrib.sessions.middleware.SessionMiddleware', - # XJH: 国际化中间件,处理多语言 'django.middleware.locale.LocaleMiddleware', - # ZYG: GZip压缩中间件,压缩响应内容 'django.middleware.gzip.GZipMiddleware', - # CHY: 缓存中间件(已注释) # 'django.middleware.cache.UpdateCacheMiddleware', - # ZY: 通用中间件,处理URL路由等 'django.middleware.common.CommonMiddleware', - # CHY: 缓存中间件(已注释) # 'django.middleware.cache.FetchFromCacheMiddleware', - # WMW: CSRF保护中间件 'django.middleware.csrf.CsrfViewMiddleware', - # XJH: 认证中间件,处理用户认证 'django.contrib.auth.middleware.AuthenticationMiddleware', - # ZYG: 消息中间件,处理临时消息 'django.contrib.messages.middleware.MessageMiddleware', - # CHY: 点击劫持保护中间件 'django.middleware.clickjacking.XFrameOptionsMiddleware', - # ZY: HTTP条件请求中间件,支持304响应 'django.middleware.http.ConditionalGetMiddleware', - # WMW: 自定义中间件,用于在线用户统计 'blog.middleware.OnlineMiddleware' ] -# ZY: 根URL配置文件 ROOT_URLCONF = 'djangoblog.urls' -# XJH: 模板配置 TEMPLATES = [ { - # ZY: 使用Django模板引擎 'BACKEND': 'django.template.backends.django.DjangoTemplates', - # WMW: 模板目录,除了应用内模板外,还查找此目录 'DIRS': [os.path.join(BASE_DIR, 'templates')], - # CHY: 是否在应用内查找模板 'APP_DIRS': True, - # ZYG: 模板选项配置 'OPTIONS': { - # XJH: 上下文处理器列表 'context_processors': [ - # ZY: 调试上下文处理器 'django.template.context_processors.debug', - # WMW: 请求上下文处理器 'django.template.context_processors.request', - # XJH: 认证上下文处理器 'django.contrib.auth.context_processors.auth', - # ZYG: 消息上下文处理器 'django.contrib.messages.context_processors.messages', - # CHY: 自定义SEO处理器 'blog.context_processors.seo_processor' ], }, }, ] -# ZY: WSGI应用配置 WSGI_APPLICATION = 'djangoblog.wsgi.application' -# WMW: 数据库配置 # Database # https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = { - # XJH: 默认数据库配置,使用MySQL 'default': { - # ZY: 数据库引擎,使用MySQL 'ENGINE': 'django.db.backends.mysql', - # CHY: 数据库名称 'NAME': 'djangoblogwhocare15', - # ZYG: 数据库用户名 'USER': 'whocare15', - # WMW: 数据库密码 'PASSWORD': 'IL2sXejLMkiEt8aU', - # XJH: 数据库主机地址 'HOST': 'mysql5.sqlpub.com', - # ZY: 数据库端口 'PORT': 3310, } } -# XJH: 密码验证配置 # Password validation # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ - # ZY: 用户属性相似性验证器,防止密码与用户信息过于相似 { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, - # WMW: 最小长度验证器 { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, - # XJH: 常见密码验证器,防止使用常见密码 { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, - # ZYG: 数字密码验证器,防止纯数字密码 { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] -# ZY: 国际化配置 - 支持的语言 LANGUAGES = ( - # WMW: 英语 ('en', _('English')), - # XJH: 简体中文 ('zh-hans', _('Simplified Chinese')), - # ZYG: 繁体中文 ('zh-hant', _('Traditional Chinese')), ) -# CHY: 本地化文件路径 LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), ) -# WMW: 默认语言代码 LANGUAGE_CODE = 'zh-hans' -# XJH: 时区设置 TIME_ZONE = 'Asia/Shanghai' -# ZY: 启用国际化翻译 USE_I18N = True -# ZYG: 启用本地化数据格式 USE_L10N = True -# CHY: 不使用时区支持,使用本地时间 USE_TZ = False -# ZY: 静态文件配置 (CSS, JavaScript, Images) +# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.10/howto/static-files/ -# WMW: 全文搜索配置 - 使用Whoosh搜索引擎 HAYSTACK_CONNECTIONS = { 'default': { - # XJH: 使用自定义中文Whoosh引擎 'ENGINE': 'djangoblog.whoosh_cn_backend.WhooshEngine', - # ZYG: 索引文件存储路径 'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'), }, } -# CHY: 自动更新搜索索引 # Automatically update searching index HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' -# ZY: 允许用户使用用户名或邮箱登录 # Allow user login with username and password AUTHENTICATION_BACKENDS = [ 'accounts.user_login_backend.EmailOrUsernameModelBackend'] -# XJH: 静态文件收集目录 STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic') -# WMW: 静态文件URL前缀 STATIC_URL = '/static/' -# ZYG: 静态文件源目录 STATICFILES = os.path.join(BASE_DIR, 'static') -# CHY: 添加插件静态文件目录 +# 添加插件静态文件目录 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'plugins'), # 让Django能找到插件的静态文件 ] -# ZY: 自定义用户模型 AUTH_USER_MODEL = 'accounts.BlogUser' -# WMW: 登录URL LOGIN_URL = '/login/' -# XJH: 时间格式化设置 TIME_FORMAT = '%Y-%m-%d %H:%M:%S' DATE_TIME_FORMAT = '%Y-%m-%d' -# ZYG: Bootstrap颜色样式 # bootstrap color styles BOOTSTRAP_COLOR_TYPES = [ 'default', 'primary', 'success', 'info', 'warning', 'danger' ] -# CHY: 分页设置 # paginate PAGINATE_BY = 10 -# WMW: HTTP缓存超时时间(30天) # http cache timeout CACHE_CONTROL_MAX_AGE = 2592000 -# XJH: 缓存配置 # cache setting CACHES = { 'default': { - # ZY: 默认使用本地内存缓存 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', - # WMW: 缓存超时时间(3小时) 'TIMEOUT': 10800, - # XJH: 缓存位置标识符 'LOCATION': 'unique-snowflake', } } -# ZYG: 根据环境变量配置使用Redis作为缓存 # 使用redis作为缓存 if os.environ.get("DJANGO_REDIS_URL"): CACHES = { 'default': { - # CHY: 使用Redis缓存后端 'BACKEND': 'django.core.cache.backends.redis.RedisCache', - # ZY: Redis服务器地址 'LOCATION': f'redis://{os.environ.get("DJANGO_REDIS_URL")}', } } -# WMW: 站点ID SITE_ID = 1 -# XJH: 百度推送URL,用于SEO优化 BAIDU_NOTIFY_URL = os.environ.get('DJANGO_BAIDU_NOTIFY_URL') \ or 'http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn' -# ZYG: 邮件配置 # Email: -# WMW: 邮件后端,使用SMTP EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' -# XJH: 是否使用TLS加密 EMAIL_USE_TLS = env_to_bool('DJANGO_EMAIL_TLS', False) -# ZY: 是否使用SSL加密 EMAIL_USE_SSL = env_to_bool('DJANGO_EMAIL_SSL', True) -# CHY: SMTP服务器地址 EMAIL_HOST = os.environ.get('DJANGO_EMAIL_HOST') or 'smtp.mxhichina.com' -# WMW: SMTP服务器端口 EMAIL_PORT = int(os.environ.get('DJANGO_EMAIL_PORT') or 465) -# XJH: SMTP用户名 EMAIL_HOST_USER = os.environ.get('DJANGO_EMAIL_USER') -# ZYG: SMTP密码 EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_PASSWORD') -# CHY: 默认发件人 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER -# ZY: 服务器通知邮件发件人 SERVER_EMAIL = EMAIL_HOST_USER -# WMW: 管理员邮箱列表 # Setting debug=false did NOT handle except email notifications ADMINS = [('admin', os.environ.get('DJANGO_ADMIN_EMAIL') or 'admin@admin.com')] -# XJH: 微信管理后台密码(双重MD5加密) # WX ADMIN password(Two times md5) WXADMIN = os.environ.get( 'DJANGO_WXADMIN_PASSWORD') or '995F03AC401D6CABABAEF756FC4D43C7' -# ZYG: 日志文件路径 LOG_PATH = os.path.join(BASE_DIR, 'logs') -# CHY: 如果日志目录不存在则创建 if not os.path.exists(LOG_PATH): os.makedirs(LOG_PATH, exist_ok=True) -# WMW: 日志配置 LOGGING = { - # ZY: 日志配置版本 'version': 1, - # XJH: 不禁用已存在的日志记录器 'disable_existing_loggers': False, - # ZYG: 根日志记录器配置 'root': { - # CHY: 日志级别 'level': 'INFO', - # WMW: 处理器列表 'handlers': ['console', 'log_file'], }, - # XJH: 日志格式化器 'formatters': { - # ZY: 详细格式 'verbose': { 'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d %(module)s] %(message)s', } }, - # WMW: 日志过滤器 'filters': { - # XJH: 调试模式关闭时启用 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse', }, - # ZYG: 调试模式开启时启用 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, - # CHY: 日志处理器 'handlers': { - # ZY: 文件日志处理器,按天轮转 'log_file': { 'level': 'INFO', 'class': 'logging.handlers.TimedRotatingFileHandler', 'filename': os.path.join(LOG_PATH, 'djangoblog.log'), - # WMW: 按天轮转 'when': 'D', - # XJH: 使用详细格式 'formatter': 'verbose', - # ZYG: 轮转间隔为1天 'interval': 1, - # CHY: 延迟创建文件 'delay': True, - # WMW: 保留5个备份文件 'backupCount': 5, - # XJH: 文件编码 'encoding': 'utf-8' }, - # ZY: 控制台日志处理器,仅在调试模式下启用 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'verbose' }, - # WMW: 空处理器,用于禁用日志 'null': { 'class': 'logging.NullHandler', }, - # XJH: 邮件通知处理器,仅在非调试模式下发送错误邮件 'mail_admins': { 'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler' } }, - # ZYG: 日志记录器配置 'loggers': { - # CHY: DjangoBlog应用日志记录器 'djangoblog': { 'handlers': ['log_file', 'console'], 'level': 'INFO', - # WMW: 允许日志传播到根记录器 'propagate': True, }, - # XJH: Django请求错误日志记录器 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', - # ZY: 不传播到根记录器 'propagate': False, } } } -# WMW: 静态文件查找器配置 STATICFILES_FINDERS = ( - # ZY: 文件系统查找器,在STATICFILES_DIRS中查找 'django.contrib.staticfiles.finders.FileSystemFinder', - # XJH: 应用目录查找器,在应用的static目录中查找 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - # ZYG: 压缩器查找器 # other 'compressor.finders.CompressorFinder', ) -# CHY: 启用静态文件压缩 COMPRESS_ENABLED = True -# WMW: 根据环境变量决定是否启用离线压缩 +# 根据环境变量决定是否启用离线压缩 COMPRESS_OFFLINE = os.environ.get('COMPRESS_OFFLINE', 'False').lower() == 'true' -# XJH: 压缩输出目录 +# 压缩输出目录 COMPRESS_OUTPUT_DIR = 'compressed' -# ZYG: 压缩文件名模板 - 包含哈希值用于缓存破坏 +# 压缩文件名模板 - 包含哈希值用于缓存破坏 COMPRESS_CSS_HASHING_METHOD = 'mtime' COMPRESS_JS_HASHING_METHOD = 'mtime' -# WMW: 高级CSS压缩过滤器 +# 高级CSS压缩过滤器 COMPRESS_CSS_FILTERS = [ - # ZY: 创建绝对URL + # 创建绝对URL 'compressor.filters.css_default.CssAbsoluteFilter', - # XJH: CSS压缩器 - 高压缩等级 + # CSS压缩器 - 高压缩等级 'compressor.filters.cssmin.CSSCompressorFilter', ] -# ZYG: 高级JS压缩过滤器 +# 高级JS压缩过滤器 COMPRESS_JS_FILTERS = [ - # CHY: JS压缩器 - 高压缩等级 + # JS压缩器 - 高压缩等级 'compressor.filters.jsmin.SlimItFilter', ] -# WMW: 压缩缓存配置 +# 压缩缓存配置 COMPRESS_CACHE_BACKEND = 'default' COMPRESS_CACHE_KEY_FUNCTION = 'compressor.cache.simple_cachekey' -# XJH: 预压缩配置 +# 预压缩配置 COMPRESS_PRECOMPILERS = ( - # ZY: 支持SCSS/SASS + # 支持SCSS/SASS ('text/x-scss', 'django_libsass.SassCompiler'), ('text/x-sass', 'django_libsass.SassCompiler'), ) -# ZYG: 压缩性能优化 -COMPRESS_MINT_DELAY = 30 # WMW: 压缩延迟(秒) -COMPRESS_MTIME_DELAY = 10 # XJH: 修改时间检查延迟 -COMPRESS_REBUILD_TIMEOUT = 2592000 # ZY: 重建超时(30天) +# 压缩性能优化 +COMPRESS_MINT_DELAY = 30 # 压缩延迟(秒) +COMPRESS_MTIME_DELAY = 10 # 修改时间检查延迟 +COMPRESS_REBUILD_TIMEOUT = 2592000 # 重建超时(30天) -# CHY: 压缩等级配置 +# 压缩等级配置 COMPRESS_CSS_COMPRESSOR = 'compressor.css.CssCompressor' COMPRESS_JS_COMPRESSOR = 'compressor.js.JsCompressor' -# WMW: 静态文件缓存配置 +# 静态文件缓存配置 STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' -# XJH: 浏览器缓存配置(通过中间件或服务器配置) +# 浏览器缓存配置(通过中间件或服务器配置) COMPRESS_URL = STATIC_URL COMPRESS_ROOT = STATIC_ROOT -# ZYG: 用户上传媒体文件配置 -MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') -MEDIA_URL = '/media/' -# WMW: 防止点击劫持,只允许同源嵌入 +MEDIA_ROOT = os.path.join(BASE_DIR, 'images') +MEDIA_URL = '/images/' + +# MDEDITOR配置 +MDEDITOR_CONFIGS = { + 'default': { + 'width': '100%', # 编辑器宽度 + 'height': 500, # 编辑器高度 + 'toolbar': ["undo", "redo", "|", + "bold", "del", "italic", "quote", "ucwords", "uppercase", "lowercase", "|", + "h1", "h2", "h3", "h5", "h6", "|", + "list-ul", "list-ol", "hr", "|", + "link", "reference-link", "image", "code", "preformatted-text", "code-block", "table", "datetime", "emoji", "html-entities", "pagebreak", "|", + "goto-line", "watch", "preview", "fullscreen", "clear", "search", "|", + "help", "info" + ], + 'upload_image_formats': ["jpg", "jpeg", "gif", "png", "bmp", "webp"], + 'image_folder': 'images', + 'theme': 'default', # dark / default + 'preview_theme': 'default', # dark / default + 'editor_theme': 'default', # pastel-on-dark / dark + 'toolbar_autofixed': True, + 'search_place': 'top', # top / bottom + 'language': 'zh-cn', # 语言 + 'line_numbers': True, # 显示行号 + 'tab_size': 4, # Tab缩进 + 'tex': True, # 科学公式TeX支持 + 'flow_chart': True, # 流程图支持 + 'sequence': True, # 时序图支持 + 'mind_map': True, # 脑图支持 + 'inline_break': True, # 换行符 + 'line_wrapping': True, # 自动换行 + 'auto_save': 1000, # 自动保存时间间隔(ms) + 'save_html_to textarea': True, # 保存HTML到文本框 + 'html_decode': True, # HTML解码 + 'emoji': True, # 表情 + 'task_list': True, # 任务列表 + 'katex': True, # 科学公式KaTeX支持 + 'toc': True, # 目录 + 'at_link': True, # @link + 'email_link': True, # email链接 + 'image_upload': True, # 图片上传 + 'image_upload_url': '/mdeditor/upload/', # 图片上传URL + 'image_path': 'images/' # 图片上传路径 + } +} + X_FRAME_OPTIONS = 'SAMEORIGIN' -# XJH: 安全头部配置 - 防XSS和其他攻击 +# 安全头部配置 - 防XSS和其他攻击 SECURE_BROWSER_XSS_FILTER = True SECURE_CONTENT_TYPE_NOSNIFF = True SECURE_REFERRER_POLICY = 'strict-origin-when-cross-origin' -# ZY: 内容安全策略 (CSP) - 防XSS攻击 -CSP_DEFAULT_SRC = ["'self'"] # WMW: 默认源只允许同源 -CSP_SCRIPT_SRC = ["'self'", "'unsafe-inline'", "cdn.mathjax.org", "*.googleapis.com"] # XJH: 脚本源配置 -CSP_STYLE_SRC = ["'self'", "'unsafe-inline'", "*.googleapis.com", "*.gstatic.com"] # ZYG: 样式源配置 -CSP_IMG_SRC = ["'self'", "data:", "*.lylinux.net", "*.gravatar.com", "*.githubusercontent.com"] # CHY: 图片源配置 -CSP_FONT_SRC = ["'self'", "*.googleapis.com", "*.gstatic.com"] # WMW: 字体源配置 -CSP_CONNECT_SRC = ["'self'"] # XJH: 连接源配置 -CSP_FRAME_SRC = ["'none'"] # ZY: 禁止嵌入框架 -CSP_OBJECT_SRC = ["'none'"] # CHY: 禁止嵌入对象 - -# ZYG: 默认自增字段类型 +# 内容安全策略 (CSP) - 防XSS攻击 +CSP_DEFAULT_SRC = ["'self'"] +CSP_SCRIPT_SRC = ["'self'", "'unsafe-inline'", "cdn.mathjax.org", "*.googleapis.com"] +CSP_STYLE_SRC = ["'self'", "'unsafe-inline'", "*.googleapis.com", "*.gstatic.com"] +CSP_IMG_SRC = ["'self'", "data:", "*.lylinux.net", "*.gravatar.com", "*.githubusercontent.com"] +CSP_FONT_SRC = ["'self'", "*.googleapis.com", "*.gstatic.com"] +CSP_CONNECT_SRC = ["'self'"] +CSP_FRAME_SRC = ["'none'"] +CSP_OBJECT_SRC = ["'none'"] + DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' -# WMW: 根据环境变量配置Elasticsearch搜索引擎 if os.environ.get('DJANGO_ELASTICSEARCH_HOST'): - # XJH: Elasticsearch DSL配置 ELASTICSEARCH_DSL = { 'default': { - # ZY: Elasticsearch主机地址 'hosts': os.environ.get('DJANGO_ELASTICSEARCH_HOST') }, } - # CHY: 使用Elasticsearch作为搜索后端 HAYSTACK_CONNECTIONS = { 'default': { - # WMW: 使用自定义Elasticsearch引擎 'ENGINE': 'djangoblog.elasticsearch_backend.ElasticSearchEngine', }, } -# ZY: 插件系统配置 # Plugin System -# XJH: 插件目录路径 PLUGINS_DIR = BASE_DIR / 'plugins' -# WMW: 激活的插件列表 ACTIVE_PLUGINS = [ - # ZYG: 文章版权插件 'article_copyright', - # CHY: 阅读时间插件 'reading_time', - # WMW: 外部链接处理插件 'external_links', - # XJH: 浏览量统计插件 'view_count', - # ZY: SEO优化插件 'seo_optimizer', - # WMW: 图片懒加载插件 'image_lazy_loading', - # XJH: 文章推荐插件 'article_recommendation', ] diff --git a/src/djangoblog/sitemap.py b/src/djangoblog/sitemap.py index 6e6bf94..8b7d446 100644 --- a/src/djangoblog/sitemap.py +++ b/src/djangoblog/sitemap.py @@ -1,189 +1,59 @@ -""" -网站地图模块 - -该模块定义了DjangoBlog博客系统的网站地图(Sitemap)类,用于生成符合搜索引擎标准的XML网站地图。 -包括静态视图、文章、分类、标签和作者的网站地图。 -""" - -# ZY: 导入Django网站地图基类 from django.contrib.sitemaps import Sitemap -# WMW: 导入URL反向解析函数 from django.urls import reverse -# XJH: 导入博客模型 from blog.models import Article, Category, Tag class StaticViewSitemap(Sitemap): - """ - 静态视图网站地图 - - 为博客首页等静态视图提供网站地图信息 - """ - # ZYG: 优先级,中等 priority = 0.5 - # CHY: 更新频率,每天 changefreq = 'daily' def items(self): - """ - 获取静态视图列表 - - 返回: - list: 静态视图名称列表 - """ - # ZY: 返回博客首页视图 return ['blog:index', ] def location(self, item): - """ - 获取视图的URL位置 - - 参数: - item: 视图名称 - - 返回: - str: 视图URL - """ - # WMW: 使用反向解析获取URL return reverse(item) class ArticleSiteMap(Sitemap): - """ - 文章网站地图 - - 为所有已发布的文章提供网站地图信息 - """ - # XJH: 更新频率,每月 changefreq = "monthly" - # ZYG: 优先级,较高 priority = "0.6" def items(self): - """ - 获取文章列表 - - 返回: - QuerySet: 已发布的文章列表 - """ - # CHY: 只返回已发布的文章 return Article.objects.filter(status='p') def lastmod(self, obj): - """ - 获取文章最后修改时间 - - 参数: - obj: 文章对象 - - 返回: - datetime: 最后修改时间 - """ - # ZY: 返回文章的最后修改时间 return obj.last_modify_time class CategorySiteMap(Sitemap): - """ - 分类网站地图 - - 为所有分类提供网站地图信息 - """ - # WMW: 更新频率,每周 changefreq = "Weekly" - # XJH: 优先级,较高 priority = "0.6" def items(self): - """ - 获取分类列表 - - 返回: - QuerySet: 所有分类列表 - """ - # ZYG: 返回所有分类 return Category.objects.all() def lastmod(self, obj): - """ - 获取分类最后修改时间 - - 参数: - obj: 分类对象 - - 返回: - datetime: 最后修改时间 - """ - # CHY: 返回分类的最后修改时间 return obj.last_modify_time class TagSiteMap(Sitemap): - """ - 标签网站地图 - - 为所有标签提供网站地图信息 - """ - # ZY: 更新频率,每周 changefreq = "Weekly" - # WMW: 优先级,较低 priority = "0.3" def items(self): - """ - 获取标签列表 - - 返回: - QuerySet: 所有标签列表 - """ - # XJH: 返回所有标签 return Tag.objects.all() def lastmod(self, obj): - """ - 获取标签最后修改时间 - - 参数: - obj: 标签对象 - - 返回: - datetime: 最后修改时间 - """ - # ZYG: 返回标签的最后修改时间 return obj.last_modify_time class UserSiteMap(Sitemap): - """ - 作者网站地图 - - 为所有文章作者提供网站地图信息 - """ - # CHY: 更新频率,每周 changefreq = "Weekly" - # ZY: 优先级,较低 priority = "0.3" def items(self): - """ - 获取作者列表 - - 返回: - list: 去重后的作者列表 - """ - # WMW: 获取所有文章的作者并去重 return list(set(map(lambda x: x.author, Article.objects.all()))) def lastmod(self, obj): - """ - 获取用户注册时间 - - 参数: - obj: 用户对象 - - 返回: - datetime: 用户注册时间 - """ - # XJH: 返回用户的注册时间 return obj.date_joined diff --git a/src/djangoblog/urls.py b/src/djangoblog/urls.py index 6a9e1de..170a8e0 100644 --- a/src/djangoblog/urls.py +++ b/src/djangoblog/urls.py @@ -73,6 +73,8 @@ urlpatterns += i18n_patterns( re_path(r'', include('servermanager.urls', namespace='servermanager')), re_path(r'', include('owntracks.urls', namespace='owntracks')) , prefix_default_language=False) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) +urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/src/djangoblog/utils.py b/src/djangoblog/utils.py index ade6c00..91d2b91 100644 --- a/src/djangoblog/utils.py +++ b/src/djangoblog/utils.py @@ -1,4 +1,4 @@ -S#!/usr/bin/env python +#!/usr/bin/env python # encoding: utf-8 @@ -243,33 +243,25 @@ def class_filter(tag, name, value): return ' '.join(allowed_classes) if allowed_classes else False return value -# WMW: 安全的属性白名单 - 防止XSS攻击 +# 安全的属性白名单 ALLOWED_ATTRIBUTES = { 'a': ['href', 'title'], 'abbr': ['title'], 'acronym': ['title'], - # XJH: 这些标签的class属性使用自定义过滤器 'span': class_filter, 'div': class_filter, 'pre': class_filter, 'code': class_filter } -# ZYG: 安全的协议白名单 - 防止javascript:等危险协议 +# 安全的协议白名单 - 防止javascript:等危险协议 ALLOWED_PROTOCOLS = ['http', 'https', 'mailto'] def sanitize_html(html): """ 安全的HTML清理函数 使用bleach库进行白名单过滤,防止XSS攻击 - - 参数: - html: 需要清理的HTML字符串 - - 返回: - str: 清理后的安全HTML字符串 """ - # CHY: 使用bleach库清理HTML return bleach.clean( html, tags=ALLOWED_TAGS, diff --git a/src/djangoblog/whoosh_cn_backend.py b/src/djangoblog/whoosh_cn_backend.py index 3c03294..04e3f7f 100644 --- a/src/djangoblog/whoosh_cn_backend.py +++ b/src/djangoblog/whoosh_cn_backend.py @@ -1,20 +1,7 @@ # encoding: utf-8 -""" -中文Whoosh搜索引擎后端模块 - -该模块为Django-Haystack框架提供了支持中文分词的Whoosh搜索引擎后端实现。 -主要功能包括: -- 中文分词支持(使用jieba库) -- 搜索索引的创建、更新和删除 -- 搜索查询处理 -- 搜索结果高亮显示 -""" - -# ZY: 导入Python未来兼容性支持 from __future__ import absolute_import, division, print_function, unicode_literals -# WMW: 导入系统标准库 import json import os import re @@ -22,13 +9,11 @@ import shutil import threading import warnings -# XJH: 导入第三方库 import six from django.conf import settings from django.core.exceptions import ImproperlyConfigured from datetime import datetime from django.utils.encoding import force_str -# ZYG: 导入Haystack框架核心模块 from haystack.backends import BaseEngine, BaseSearchBackend, BaseSearchQuery, EmptyResults, log_query from haystack.constants import DJANGO_CT, DJANGO_ID, ID from haystack.exceptions import MissingDependency, SearchBackendError, SkipDocument @@ -37,9 +22,7 @@ from haystack.models import SearchResult from haystack.utils import get_identifier, get_model_ct from haystack.utils import log as logging from haystack.utils.app_loading import haystack_get_model -# CHY: 导入中文分词库 from jieba.analyse import ChineseAnalyzer -# ZY: 导入Whoosh搜索引擎核心模块 from whoosh import index from whoosh.analysis import StemmingAnalyzer from whoosh.fields import BOOLEAN, DATETIME, IDLIST, KEYWORD, NGRAM, NGRAMWORDS, NUMERIC, Schema, TEXT @@ -51,47 +34,36 @@ from whoosh.qparser import QueryParser from whoosh.searching import ResultsPage from whoosh.writing import AsyncWriter -# WMW: 检查Whoosh库是否安装 try: import whoosh except ImportError: raise MissingDependency( "The 'whoosh' backend requires the installation of 'Whoosh'. Please refer to the documentation.") -# XJH: 检查Whoosh版本是否满足最低要求 +# Handle minimum requirement. if not hasattr(whoosh, '__version__') or whoosh.__version__ < (2, 5, 0): raise MissingDependency( "The 'whoosh' backend requires version 2.5.0 or greater.") -# ZYG: 冒泡正确错误 +# Bubble up the correct error. -# CHY: 日期时间正则表达式,用于解析ISO格式的日期时间 DATETIME_REGEX = re.compile( '^(?P\d{4})-(?P\d{2})-(?P\d{2})T(?P\d{2}):(?P\d{2}):(?P\d{2})(\.\d{3,6}Z?)?$') -# ZY: 线程本地存储,用于存储RAM存储实例 LOCALS = threading.local() LOCALS.RAM_STORE = None class WhooshHtmlFormatter(HtmlFormatter): """ - Whoosh HTML格式化器 - - 这是一个比whoosh.HtmlFormatter更简单的HTML格式化器。 - 我们使用它来在不同后端之间获得一致的结果。 - 特别是,Solr、Xapian和Elasticsearch都使用这种格式。 + This is a HtmlFormatter simpler than the whoosh.HtmlFormatter. + We use it to have consistent results across backends. Specifically, + Solr, Xapian and Elasticsearch are using this formatting. """ - # WMW: HTML模板,用于高亮显示搜索结果 template = '<%(tag)s>%(t)s' class WhooshSearchBackend(BaseSearchBackend): - """ - Whoosh搜索引擎后端 - - 实现了基于Whoosh的搜索引擎后端,支持中文分词和搜索。 - """ - # XJH: Whoosh保留的关键字,用于特殊用途 + # Word reserved by Whoosh for special use. RESERVED_WORDS = ( 'AND', 'NOT', diff --git a/src/images/images/4f2a1b04-48bd-4a09-9986-b63fd00d1568.gif b/src/images/images/4f2a1b04-48bd-4a09-9986-b63fd00d1568.gif new file mode 100644 index 0000000..19116ff Binary files /dev/null and b/src/images/images/4f2a1b04-48bd-4a09-9986-b63fd00d1568.gif differ diff --git a/src/images/images/50ad00cb-0abf-4897-90bd-e77ea213f76d.gif b/src/images/images/50ad00cb-0abf-4897-90bd-e77ea213f76d.gif new file mode 100644 index 0000000..7e792c0 Binary files /dev/null and b/src/images/images/50ad00cb-0abf-4897-90bd-e77ea213f76d.gif differ diff --git a/src/images/images/63e0902f-13df-454c-ba77-d8f630bdcb2b.gif b/src/images/images/63e0902f-13df-454c-ba77-d8f630bdcb2b.gif new file mode 100644 index 0000000..0ced7b6 Binary files /dev/null and b/src/images/images/63e0902f-13df-454c-ba77-d8f630bdcb2b.gif differ diff --git a/src/images/images/d3b388fa-485a-4198-95a1-3dc4c036a916.png b/src/images/images/d3b388fa-485a-4198-95a1-3dc4c036a916.png new file mode 100644 index 0000000..826b5e2 Binary files /dev/null and b/src/images/images/d3b388fa-485a-4198-95a1-3dc4c036a916.png differ diff --git a/src/locale/zh_Hans/LC_MESSAGES/django.po b/src/locale/zh_Hans/LC_MESSAGES/django.po index 200b7e6..1400c9e 100644 --- a/src/locale/zh_Hans/LC_MESSAGES/django.po +++ b/src/locale/zh_Hans/LC_MESSAGES/django.po @@ -665,3 +665,95 @@ msgstr "快捷登录" #: .\templates\share_layout\nav.html:26 msgid "Article archive" msgstr "文章归档" + +#: .\templates\share_layout\nav.html:29 +msgid "Create Article" +msgstr "创建文章" + +#: .\templates\share_layout\nav.html:33 +msgid "My Articles" +msgstr "我的文章" + +#: .\templates\blog\article_create.html:5 +msgid "Create Article" +msgstr "创建文章" + +#: .\templates\blog\article_edit.html:5 +msgid "Edit Article" +msgstr "编辑文章" + +#: .\templates\blog\my_articles.html:5 +msgid "My Articles" +msgstr "我的文章" + +#: .\templates\share_layout\nav.html:29 +msgid "发布文章" +msgstr "发布文章" + +#: .\templates\share_layout\nav.html:33 +msgid "我的文章" +msgstr "我的文章" + +#: .\templates\blog\article_create.html:97 +msgid "发布" +msgstr "发布" + +#: .\templates\blog\article_create.html:98 +msgid "取消" +msgstr "取消" + +#: .\templates\blog\article_edit.html:97 +msgid "更新" +msgstr "更新" + +#: .\templates\blog\article_edit.html:98 +msgid "取消" +msgstr "取消" + +#: .\templates\blog\my_articles.html:13 +msgid "发布新文章" +msgstr "发布新文章" + +#: .\templates\blog\my_articles.html:22 +msgid "标题" +msgstr "标题" + +#: .\templates\blog\my_articles.html:23 +msgid "状态" +msgstr "状态" + +#: .\templates\blog\my_articles.html:24 +msgid "分类" +msgstr "分类" + +#: .\templates\blog\my_articles.html:25 +msgid "创建时间" +msgstr "创建时间" + +#: .\templates\blog\my_articles.html:26 +msgid "浏览量" +msgstr "浏览量" + +#: .\templates\blog\my_articles.html:27 +msgid "操作" +msgstr "操作" + +#: .\templates\blog\my_articles.html:38 +msgid "已发布" +msgstr "已发布" + +#: .\templates\blog\my_articles.html:40 +msgid "草稿" +msgstr "草稿" + +#: .\templates\blog\my_articles.html:48 +msgid "编辑" +msgstr "编辑" + +#: .\templates\blog\my_articles.html:58 +msgid "您还没有创建任何文章。" +msgstr "您还没有创建任何文章。" + +#: .\templates\blog\my_articles.html:59 +msgid "创建您的第一篇文章" +msgstr "创建您的第一篇文章" diff --git a/src/logs/djangoblog.log b/src/logs/djangoblog.log index 493da88..c7f086a 100644 --- a/src/logs/djangoblog.log +++ b/src/logs/djangoblog.log @@ -1,939 +1,4183 @@ -[2025-10-14 20:36:01,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:01,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:01,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:01,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:01,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:01,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:01,520] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:01,520] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:01,528] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:01,528] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:01,529] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:01,529] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:02,586] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:02,586] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:02,587] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:02,587] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:02,607] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader -[2025-10-14 20:36:12,997] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:36:13,031] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:36:13,184] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:36:13,184] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:36:13,667] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:36:13,828] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:37:37,355] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:37:43,208] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:37:58,772] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:38:57,032] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:38:57,032] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:38:57,310] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:38:57,345] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:38:57,345] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:00,721] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:39:00,721] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:39:00,977] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:01,013] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:01,013] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:04,783] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/java.html"]} -[2025-10-14 20:39:04,783] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/java.html"]} -[2025-10-14 20:39:05,045] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:05,086] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:05,086] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:07,299] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/python.html"]} -[2025-10-14 20:39:07,299] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/python.html"]} -[2025-10-14 20:39:07,544] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:07,577] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:07,577] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:14,925] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-fen-xiang.html"]} -[2025-10-14 20:39:14,925] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-fen-xiang.html"]} -[2025-10-14 20:39:15,174] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:15,208] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:15,208] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:22,570] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-qiu-zhu.html"]} -[2025-10-14 20:39:22,570] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-qiu-zhu.html"]} -[2025-10-14 20:39:22,855] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:22,894] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:22,894] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:40:35,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:40:35,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:40:36,018] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:40:36,051] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:40:36,051] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:42:18,929] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:42:18,929] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:42:19,272] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:42:19,305] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:42:19,305] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:00,493] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:43:00,493] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:43:00,821] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:43:00,862] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:00,862] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:32,291] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:43:32,291] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:43:32,592] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:43:32,626] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:32,626] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:37,686] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:43:38,551] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:43:38,779] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:44:13,528] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 20:44:18,070] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:44:18,070] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:44:18,071] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,071] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,072] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,072] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:18,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:18,158] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,158] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,308] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,308] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,310] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:44:25,492] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:44:25,492] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:44:25,494] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:44:25,494] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,705] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:44:25,707] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:44:25,740] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:44:25,740] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:44:26,025] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:44:26,259] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:44:39,270] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 20:44:39,386] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:39,762] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:39,803] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:44:40,092] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 20:44:49,669] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:49,669] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:49,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:49,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:49,835] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 20:44:49,922] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test@test.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 20:44:49,922] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test@test.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 20:44:49,967] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:49,987] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:44:50,452] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:50,517] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 20:44:50,666] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:44:50,803] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 20:45:40,205] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:45:40,205] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:45:40,206] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:45:40,206] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:45:40,208] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:45:40,208] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:45:40,209] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:45:40,209] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:45:40,211] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:45:40,211] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:45:40,483] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:45:40,526] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:45:40,526] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:32,528] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:32,528] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:32,859] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:47:32,897] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:32,897] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:42,168] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:42,168] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:42,519] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:47:42,552] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:42,552] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:48:28,419] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:48:28,419] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:48:28,759] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:48:28,865] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:48:28,865] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:49:18,735] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:49:19,036] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:49:19,296] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:49:23,302] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:49:23,302] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,306] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:23,306] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,392] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:23,392] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:30,946] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:30,946] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:30,949] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:49:31,411] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:49:31,411] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:49:31,412] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:49:31,412] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:31,423] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:31,423] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:31,663] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:49:31,664] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:49:31,697] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:49:31,697] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:49:32,003] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:49:32,239] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:49:45,839] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 20:49:45,956] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:49:46,334] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:49:46,417] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 20:49:46,439] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:49:46,571] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 20:50:01,693] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 -[2025-10-14 20:50:01,850] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:50:01,992] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl -[2025-10-14 20:50:03,227] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 -[2025-10-14 20:50:05,550] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 -[2025-10-14 20:50:06,429] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:archives -[2025-10-14 20:50:08,712] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 20:50:39,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:50:39,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:50:39,656] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:50:39,656] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:50:39,885] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:50:39,919] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:50:39,919] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:09,293] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:09,293] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:09,603] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:51:09,713] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:09,713] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:43,081] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:43,081] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:43,421] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:51:43,457] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:43,457] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:10,181] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:52:10,497] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:52:10,766] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:52:14,279] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:14,279] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,282] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,282] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:14,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,381] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,381] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:14,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,293] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,293] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,294] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,294] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,296] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:52:21,964] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:52:21,964] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:52:21,965] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:52:21,965] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,966] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,966] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:22,169] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:52:22,170] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:52:22,203] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:22,203] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:22,562] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:52:22,819] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:52:47,474] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:52:47,474] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:52:47,476] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:47,476] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:47,476] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:47,476] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:47,478] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:47,478] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:47,772] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:52:47,810] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:47,810] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:53:23,185] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:53:23,185] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:53:23,549] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:53:23,587] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:53:23,587] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:53:58,012] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:53:58,300] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:53:58,541] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:54:04,534] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:04,534] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:04,535] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,535] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,537] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,537] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:04,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:04,635] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,635] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,538] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,538] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,541] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,541] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,542] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:54:11,992] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:54:11,992] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:54:11,997] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:54:11,997] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,999] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,999] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:12,207] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:54:12,211] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:54:12,330] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:54:12,330] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:54:12,640] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:54:12,872] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:54:46,370] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:54:46,370] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:54:46,372] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:46,372] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:46,372] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:46,372] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:46,373] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:46,373] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:46,374] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:46,374] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:46,375] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:46,375] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:46,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:46,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:46,657] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:54:46,694] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:54:46,694] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:55:22,218] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:55:22,516] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:55:22,776] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:00:59,799] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:01:04,366] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:01:04,366] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,456] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,456] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,457] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,457] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,459] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:04,459] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,204] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,204] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,207] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:01:20,674] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:01:20,674] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:01:20,676] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:20,676] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:20,676] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,676] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,885] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:01:20,886] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:01:20,921] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:01:20,921] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:01:21,242] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:01:21,272] WARNING [django.security.csrf.log_response:241 log] Forbidden (CSRF token from POST incorrect.): /login/ -[2025-10-14 21:01:21,497] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:01:31,631] WARNING [django.security.csrf.log_response:241 log] Forbidden (CSRF token from POST incorrect.): /login/ -[2025-10-14 21:01:37,036] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:01:40,679] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:40,679] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:40,773] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,773] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,774] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,774] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,775] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,775] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,776] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,776] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,777] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:40,777] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:43,125] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:01:43,491] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:01:43,636] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:02:00,786] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:00,786] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:00,791] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:00,791] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:00,794] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:02:01,271] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:02:01,271] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:02:01,273] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:02:01,273] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:02:01,274] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:01,274] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:01,275] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:01,275] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:01,276] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:01,276] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:01,498] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:02:01,499] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:02:01,589] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:02:01,589] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:02:01,927] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:02:02,199] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:02:33,526] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 21:02:33,665] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:02:34,078] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:02:34,164] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 21:02:34,184] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:02:34,323] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 21:02:36,040] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:author_admin_1 -[2025-10-14 21:02:36,350] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:02:36,495] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl -[2025-10-14 21:02:55,147] INFO [blog.models.comment_list:146 models] get article comments:1 -[2025-10-14 21:02:55,262] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:02:55,650] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:03:06,539] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:03:06,539] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:03:06,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:03:06,623] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,623] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,624] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,624] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,625] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,625] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:04:24,608] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:04:24,608] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:04:24,776] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test1@test1.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 21:04:24,776] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test1@test1.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 21:04:24,939] INFO [accounts.views.account_result:150 views] register -[2025-10-14 21:04:24,945] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:04:24,978] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:04:24,978] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:06:30,066] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,066] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,068] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,068] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,070] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:06:30,529] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 21:06:30,529] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 21:06:30,531] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:06:30,531] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:06:30,531] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,531] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,533] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,533] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,748] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:06:30,754] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:06:30,791] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:06:30,791] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:06:31,125] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:06:31,391] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:10:00,425] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:10:00,425] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:10:00,746] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:10:00,780] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:00,780] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:13,725] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:10:14,017] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:10:14,279] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:10:17,053] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:10:17,053] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:10:17,056] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,056] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,057] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,057] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,058] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,058] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,059] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,059] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,061] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:17,061] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:17,148] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,148] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,149] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,149] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,151] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:17,151] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,705] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,705] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,707] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,707] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,707] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:10:50,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:10:50,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:10:50,894] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:10:50,894] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:51,103] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:10:51,104] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:10:51,141] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:51,141] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:51,498] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:10:51,790] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:13:21,061] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:14:06,379] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 21:14:06,507] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:14:06,921] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:14:07,017] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 21:14:07,044] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:14:07,190] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-15 19:06:42,893] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:42,893] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:42,894] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:42,894] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:42,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:42,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:42,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:42,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:42,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:42,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:42,905] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:42,905] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:51,101] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:51,101] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:51,103] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:51,103] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:51,105] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:51,105] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:51,106] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:51,106] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:52,148] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:52,148] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:52,149] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:52,149] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:52,150] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:52,150] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:52,151] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:52,151] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:52,155] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:52,155] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:52,156] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:52,156] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:52,157] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:52,157] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:52,158] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:52,158] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:52,179] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader -[2025-10-15 19:07:03,571] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 19:07:03,600] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 19:07:04,004] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 19:07:04,004] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 19:07:07,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 19:07:10,022] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 19:07:25,823] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-15 19:07:26,719] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-15 19:07:30,321] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-15 19:07:31,108] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-15 19:07:31,567] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 19:07:32,878] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:20,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:20,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:20,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:20,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:20,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:20,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:20,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:20,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:20,637] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:20,637] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:20,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:20,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:20,640] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:20,640] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:20,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:20,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:20,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:20,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:20,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:20,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:21,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:21,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:21,778] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:21,778] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:21,779] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:21,779] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:21,780] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:21,780] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:21,785] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:21,785] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:21,786] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:21,786] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:21,800] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader -[2025-10-15 20:20:24,225] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 20:20:24,279] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 20:20:24,359] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:24,359] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:26,465] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:20:27,034] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 20:20:41,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:41,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:41,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:41,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:41,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:41,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:41,076] INFO [accounts.views.form_valid:123 views] next -[2025-10-15 20:20:42,074] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-15 20:20:42,074] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-15 20:20:42,075] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-15 20:20:42,075] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:42,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:42,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:42,514] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 20:20:42,516] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 20:20:42,575] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:42,575] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:43,118] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:20:43,638] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 20:23:08,795] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} -[2025-10-15 20:23:08,795] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} -[2025-10-15 20:23:09,719] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 20:23:09,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:23:09,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:23:16,292] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 20:23:17,191] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:23:17,887] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 20:23:23,601] INFO [blog.models.comment_list:151 models] set article comments:2 -[2025-10-15 20:23:23,776] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 1, 有效推荐数量: 1 -[2025-10-15 20:23:23,776] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 -[2025-10-15 20:23:24,628] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 1, 有效推荐数量: 1 -[2025-10-15 20:23:24,628] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 -[2025-10-15 20:23:24,753] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:23:24,964] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 20:26:53,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:26:53,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:26:53,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:26:53,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:26:53,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:26:53,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:26:53,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:26:53,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:26:53,886] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:26:53,886] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:26:53,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:26:53,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:08,086] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:08,086] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:08,087] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:08,087] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:08,090] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:08,090] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:08,091] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:08,091] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:09,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:09,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:09,052] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:09,052] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:09,072] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:27:32,502] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:27:32,579] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:27:32,618] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:27:32,618] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:27:33,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:27:34,312] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:27:37,984] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-20 20:27:38,238] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:27:38,393] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-20 20:29:12,662] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:12,662] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:12,665] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:12,665] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:12,666] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:12,666] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:12,668] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:12,668] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:12,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:12,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:12,672] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:29:13,070] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:29:13,070] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:29:13,074] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:29:13,074] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:29:13,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:13,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:13,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:13,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:13,079] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:13,079] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:13,080] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:13,080] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:13,081] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:13,081] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:13,369] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:29:13,372] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:29:13,415] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:29:13,415] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:29:14,372] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:29:14,691] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:30:21,554] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:tag_不知道_1 +[2025-11-20 20:30:21,855] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:30:22,027] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-20 20:30:26,108] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-20 20:31:33,241] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:31:33,241] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:31:33,242] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,242] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:33,378] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,378] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,134] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,134] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,135] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:31:40,545] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:31:40,545] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:31:40,546] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:31:40,546] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,549] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,549] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,964] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:31:40,966] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:31:41,293] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:31:41,293] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:31:42,514] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:31:42,839] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:36:28,679] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:28,679] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:28,682] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:28,682] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:28,686] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:28,686] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:28,687] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:28,687] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:29,368] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:29,368] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:29,370] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:29,370] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:29,373] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:29,373] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:29,374] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:29,374] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:29,389] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:36:32,674] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:36:32,677] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:36:32,715] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:36:32,715] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:36:33,557] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:36:33,950] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:37:06,588] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:37:06,588] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:37:06,589] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,589] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,590] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,590] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,592] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:06,592] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:06,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,679] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:06,679] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:16,658] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:37:17,094] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:37:17,094] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:37:17,095] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:37:17,095] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:37:17,095] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:17,095] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:17,098] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:17,098] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:17,349] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:37:17,350] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:37:17,404] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:37:17,404] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:37:18,343] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:37:18,662] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:12,811] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:12,811] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:12,812] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:12,812] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:30,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:30,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:30,627] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:30,627] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:30,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:30,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:30,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:30,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:30,634] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:30,634] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:30,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:30,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:06,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:06,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:06,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:06,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:07,410] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:07,410] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:07,411] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:07,411] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:07,413] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:07,413] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:07,415] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:07,415] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:07,417] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:07,417] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:07,429] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:46:11,534] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:46:11,538] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:46:11,616] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:46:11,616] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:46:12,493] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:46:12,774] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:20,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:20,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:20,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:20,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:20,520] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:20,520] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:20,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:20,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:21,205] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:21,205] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:21,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:21,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:21,224] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:50:24,080] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:50:24,084] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:50:24,383] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:50:24,383] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:50:25,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:50:26,572] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:50:38,579] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:03,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:03,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:03,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:03,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:03,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:03,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:03,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:03,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:04,550] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:04,550] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:04,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:04,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:04,553] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:04,553] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:04,567] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:58:07,536] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:58:07,540] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:58:07,576] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:07,576] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:08,449] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:58:08,716] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:58:29,662] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:58:29,662] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:58:29,976] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:58:30,011] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:30,011] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:30,164] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:30,164] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:30,165] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:30,165] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:30,165] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:30,201] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:58:30,677] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:30,677] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:30,677] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:30,678] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:30,678] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:30,893] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:58:31,317] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 20:58:38,918] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:58:39,034] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:39,034] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:39,035] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:39,035] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:39,035] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:39,461] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:39,461] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:39,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:39,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:39,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:42,570] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:58:44,020] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:58:44,179] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:58:48,940] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 20:58:49,042] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:49,441] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:49,442] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:49,442] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 20:58:49,442] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:49,443] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:49,639] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 20:59:00,115] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:59:00,256] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:00,256] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:00,257] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:00,258] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:00,258] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:00,666] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:00,666] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:00,666] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:00,667] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:00,667] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:23,458] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:59:23,458] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:59:23,792] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:59:23,831] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:23,831] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:23,958] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:23,959] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:23,959] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:23,959] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:23,960] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:23,981] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:59:24,429] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:24,430] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:24,431] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:24,431] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:24,432] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:24,549] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:59:24,824] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 20:59:34,294] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:59:35,098] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:59:35,254] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:59:42,040] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:59:42,040] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:42,141] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,141] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,143] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:42,143] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,384] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:59:49,866] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:59:49,866] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:59:49,867] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:59:49,867] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:59:49,868] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,868] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,870] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,870] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:50,078] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:59:50,079] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:59:50,122] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:50,122] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:50,925] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:59:51,204] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:00:50,033] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:00:50,033] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:00:50,431] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 21:00:50,470] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:00:50,470] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:01:06,787] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 21:01:07,628] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:01:07,911] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:02:26,248] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:02:26,248] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:02:26,695] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 21:02:26,839] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:02:26,839] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:02:26,945] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:02:26,945] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:02:26,946] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:02:26,946] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:02:26,947] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:02:26,968] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 21:02:27,376] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:02:27,376] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:02:27,377] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:02:27,377] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:02:27,377] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:02:27,552] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 21:02:27,651] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:02:27,941] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 21:02:57,873] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 21:02:58,702] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:02:58,860] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:03:02,932] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 21:03:02,932] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 21:03:02,933] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:02,933] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:02,935] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:02,935] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:03,028] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:03,028] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:03,030] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:03,030] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:03,031] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:03,031] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,259] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,259] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,261] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 21:03:10,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 21:03:10,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 21:03:10,892] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 21:03:10,892] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 21:03:10,892] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,892] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:11,272] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 21:03:11,273] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 21:03:11,458] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:03:11,458] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:03:12,674] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:03:12,988] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:03:18,179] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 21:03:18,293] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:03:18,294] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:03:18,294] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:03:18,294] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:03:18,295] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:03:18,686] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:03:18,687] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:03:18,687] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:03:18,688] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:03:18,689] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:03:18,881] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 21:03:18,989] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:03:19,157] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 21:07:59,835] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-20 21:08:05,251] INFO [blog.models.comment_list:146 models] get article comments:2 +[2025-11-20 21:08:05,362] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:05,362] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:05,363] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:05,363] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:08:05,363] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:08:05,757] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:05,758] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:05,758] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:05,759] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:08:05,759] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:08:57,317] INFO [blog.models.comment_list:151 models] set article comments:4 +[2025-11-20 21:08:57,465] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:57,465] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:57,465] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 21:08:57,466] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:57,466] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:08:57,963] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:57,964] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:57,965] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 21:08:57,966] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:57,967] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:05:26,476] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:05:26,476] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:05:26,476] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:05:26,476] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:05:26,477] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:05:26,477] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:05:26,478] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:05:26,478] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:05:26,479] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:05:26,479] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:05:26,479] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:05:26,479] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:05:26,480] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:05:26,480] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:05:26,480] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:05:26,480] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:05:26,481] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:05:26,481] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:05:26,481] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:05:26,481] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:05:26,483] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:05:26,483] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:05:26,483] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:05:26,483] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:05:26,484] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:05:26,484] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:05:26,484] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:05:26,484] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:05:27,182] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:05:27,182] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:05:27,182] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:05:27,182] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:05:27,183] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:05:27,183] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:05:27,183] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:05:27,183] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:05:27,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:05:27,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:05:27,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:05:27,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:05:27,185] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:05:27,185] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:05:27,185] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:05:27,185] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:05:27,187] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:05:27,187] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:05:27,187] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:05:27,187] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:05:27,189] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:05:27,189] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:05:27,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:05:27,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:05:27,190] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:05:27,190] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:05:27,190] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:05:27,190] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:05:27,203] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:05:29,950] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:05:29,955] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:05:30,120] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:05:30,120] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:05:31,283] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:05:31,631] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:05:35,825] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 22:05:35,924] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:05:35,924] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:05:35,924] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 22:05:35,924] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:05:35,925] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:05:36,529] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:05:36,529] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:05:36,530] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 22:05:36,530] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:05:36,530] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:05:36,714] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 22:05:36,829] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:05:36,993] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:05:47,927] INFO [blog.models.comment_list:146 models] get article comments:2 +[2025-11-20 22:05:48,025] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:05:48,025] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:05:48,025] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 22:05:48,026] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:05:48,027] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:05:48,460] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:05:48,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:05:48,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 22:05:48,463] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:05:48,463] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:05:55,059] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-20 22:05:57,835] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-20 22:05:58,199] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:05:58,429] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-20 22:06:00,039] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 22:06:00,201] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:06:00,202] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 22:06:00,202] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:06:00,202] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:06:00,202] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:06:00,715] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:06:00,716] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 22:06:00,717] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:06:00,717] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:06:00,718] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:06:44,847] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/5.html"]} +[2025-11-20 22:06:44,847] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/5.html"]} +[2025-11-20 22:06:45,280] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 22:06:45,429] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:06:45,429] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:06:45,749] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:06:45,749] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 22:06:45,749] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:06:45,750] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:06:45,750] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:06:45,788] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:06:46,412] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:06:46,413] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 22:06:46,413] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:06:46,413] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:06:46,413] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:06:46,559] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:06:46,943] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:07:14,545] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 22:07:14,685] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:07:14,686] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 22:07:14,686] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:07:14,687] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:07:14,687] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:07:15,167] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:07:15,168] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 22:07:15,168] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:07:15,168] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:07:15,168] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:07:29,731] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/author/admin.html"]} +[2025-11-20 22:07:29,731] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/author/admin.html"]} +[2025-11-20 22:07:29,732] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 22:07:29,732] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 22:07:29,733] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:07:29,733] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:07:29,733] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:07:29,733] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:07:29,734] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:07:29,734] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:07:29,734] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:07:29,734] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:07:29,735] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:07:29,735] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:07:30,042] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:07:30,169] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:07:30,169] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:07:59,198] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:08:00,262] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:08:00,614] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:08:03,124] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 22:08:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:08:03,239] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:08:03,239] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:08:03,239] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:08:03,602] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:08:03,603] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:08:03,605] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:08:03,606] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:08:03,751] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 22:08:03,860] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:08:04,044] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:08:22,427] INFO [blog.models.comment_list:146 models] get article comments:2 +[2025-11-20 22:08:22,520] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:08:22,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:08:22,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:08:22,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:08:22,872] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:08:22,872] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:08:22,872] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:08:22,872] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:09:59,577] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/6.html"]} +[2025-11-20 22:09:59,577] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/6.html"]} +[2025-11-20 22:09:59,943] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:09:59,983] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:09:59,983] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:10:02,372] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:10:03,177] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:10:03,513] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:10:12,689] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-20 22:10:12,821] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:10:12,821] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:10:12,822] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:10:12,822] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:10:13,300] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:10:13,301] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:10:13,301] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:10:13,301] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:10:13,410] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:10:13,560] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:10:56,942] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/6.html"]} +[2025-11-20 22:10:56,942] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/6.html"]} +[2025-11-20 22:10:57,558] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-20 22:10:57,601] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:10:57,601] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:10:57,742] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:10:57,742] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:10:57,743] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:10:57,743] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:10:57,764] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:10:58,309] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 3, 有效推荐数量: 3 +[2025-11-20 22:10:58,309] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:10:58,310] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:10:58,310] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:10:58,430] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:10:58,732] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:11:07,703] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 22:11:07,703] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 22:11:07,703] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:07,703] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:07,704] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:07,805] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:07,805] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:07,805] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:07,805] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:07,806] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:07,806] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:07,806] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:07,806] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:07,806] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:07,806] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:14,718] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:14,719] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 22:11:15,568] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/author/test.html"]} +[2025-11-20 22:11:15,568] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/author/test.html"]} +[2025-11-20 22:11:15,569] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 22:11:15,569] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 22:11:15,569] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:15,569] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:15,570] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 22:11:15,910] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:11:15,911] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:11:16,010] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:11:16,010] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:11:16,838] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:11:17,313] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:11:54,617] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/7.html"]} +[2025-11-20 22:11:54,617] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/7.html"]} +[2025-11-20 22:11:55,117] INFO [blog.models.comment_list:151 models] set article comments:7 +[2025-11-20 22:11:55,169] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:11:55,169] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:11:55,360] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:11:55,361] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:11:55,361] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:11:55,361] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:11:55,361] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:11:55,389] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:11:55,969] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:11:55,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:11:55,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:11:55,971] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:11:55,971] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:11:56,121] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:11:56,522] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:12:14,989] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/7.html"]} +[2025-11-20 22:12:14,989] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/7.html"]} +[2025-11-20 22:12:15,547] INFO [blog.models.comment_list:151 models] set article comments:7 +[2025-11-20 22:12:15,590] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:12:15,590] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:12:15,712] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:12:15,712] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:12:15,713] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:12:15,713] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:12:15,713] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:12:15,733] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:12:16,202] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:12:16,203] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:12:16,203] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:12:16,203] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:12:16,203] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:12:16,325] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:12:16,600] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:15:23,250] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:15:23,250] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:15:23,251] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:15:23,251] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:15:23,252] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:15:23,252] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:15:23,252] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:15:23,252] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:15:23,253] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:15:23,253] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:15:23,253] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:15:23,253] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:15:23,254] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:15:23,254] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:15:23,254] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:15:23,254] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:15:23,255] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:15:23,255] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:15:23,256] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:15:23,256] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:15:23,257] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:15:23,257] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:15:23,257] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:15:23,257] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:15:23,258] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:15:23,258] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:15:23,258] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:15:23,258] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:15:23,942] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:15:23,942] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:15:23,942] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:15:23,942] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:15:23,943] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:15:23,943] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:15:23,944] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:15:23,944] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:15:23,944] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:15:23,944] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:15:23,945] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:15:23,945] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:15:23,945] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:15:23,945] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:15:23,946] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:15:23,946] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:15:23,947] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:15:23,947] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:15:23,948] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:15:23,948] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:15:23,949] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:15:23,949] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:15:23,949] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:15:23,949] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:15:23,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:15:23,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:15:23,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:15:23,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:15:23,963] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:15:26,488] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:15:26,491] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:15:26,880] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:15:26,880] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:15:28,399] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:15:29,051] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:16:25,962] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\image_views.py changed, reloading. +[2025-11-20 22:16:26,850] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:16:26,850] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:16:26,850] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:16:26,850] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:16:26,851] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:16:26,851] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:16:26,851] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:16:26,851] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:16:26,853] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:16:26,853] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:16:26,853] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:16:26,853] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:16:26,854] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:16:26,854] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:16:26,855] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:16:26,855] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:16:26,856] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:16:26,856] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:16:26,856] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:16:26,856] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:16:26,857] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:16:26,857] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:16:26,858] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:16:26,858] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:16:26,859] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:16:26,859] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:16:26,859] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:16:26,859] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:16:26,872] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:16:54,087] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\views.py changed, reloading. +[2025-11-20 22:16:54,954] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:16:54,954] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:16:54,955] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:16:54,955] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:16:54,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:16:54,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:16:54,956] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:16:54,956] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:16:54,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:16:54,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:16:54,959] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:16:54,959] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:16:54,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:16:54,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:16:54,960] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:16:54,960] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:16:54,961] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:16:54,961] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:16:54,961] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:16:54,961] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:16:54,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:16:54,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:16:54,962] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:16:54,962] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:16:54,963] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:16:54,963] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:16:54,963] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:16:54,963] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:16:54,977] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:16:58,805] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-20 22:16:59,696] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:16:59,696] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:16:59,697] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:16:59,697] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:16:59,697] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:16:59,697] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:16:59,697] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:16:59,697] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:16:59,698] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:16:59,698] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:16:59,698] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:16:59,698] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:16:59,700] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:16:59,700] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:16:59,700] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:16:59,700] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:16:59,701] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:16:59,701] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:16:59,701] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:16:59,701] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:16:59,702] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:16:59,702] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:16:59,702] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:16:59,702] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:16:59,704] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:16:59,704] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:16:59,704] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:16:59,704] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:16:59,716] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:17:20,727] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:17:20,727] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:17:20,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:17:20,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:17:20,728] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:17:20,728] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:17:20,728] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:17:20,728] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:17:20,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:17:20,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:17:20,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:17:20,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:17:20,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:17:20,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:17:20,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:17:20,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:17:20,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:17:20,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:17:20,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:17:20,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:17:20,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:17:20,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:17:20,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:17:20,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:17:20,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:17:20,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:17:20,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:17:20,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:17:21,449] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:17:21,449] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:17:21,449] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:17:21,449] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:17:21,451] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:17:21,451] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:17:21,451] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:17:21,451] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:17:21,452] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:17:21,452] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:17:21,452] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:17:21,452] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:17:21,453] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:17:21,453] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:17:21,453] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:17:21,453] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:17:21,454] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:17:21,454] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:17:21,454] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:17:21,454] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:17:21,455] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:17:21,455] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:17:21,455] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:17:21,455] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:17:21,457] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:17:21,457] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:17:21,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:17:21,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:17:21,469] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:17:24,788] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:17:24,793] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:17:25,110] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:17:25,110] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:17:26,487] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:17:26,794] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:19:58,000] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\urls.py changed, reloading. +[2025-11-20 22:19:58,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:19:58,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:19:58,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:19:58,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:19:58,951] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:19:58,951] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:19:58,952] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:19:58,952] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:19:58,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:19:58,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:19:58,953] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:19:58,953] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:19:58,954] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:19:58,954] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:19:58,954] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:19:58,954] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:19:58,955] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:19:58,955] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:19:58,955] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:19:58,955] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:19:58,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:19:58,957] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:19:58,957] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:19:58,957] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:19:58,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:19:58,959] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:19:58,959] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:19:58,959] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:19:58,971] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:20:18,276] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:20:18,276] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:20:18,277] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:20:18,277] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:20:18,279] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:20:18,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:20:18,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:20:18,282] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:20:18,282] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:20:18,283] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:20:18,283] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:20:18,283] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:20:18,283] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:20:18,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:20:18,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:20:18,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:20:18,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:20:18,290] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:20:18,290] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:20:18,290] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:20:18,290] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:20:19,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:20:19,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:20:19,018] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:20:19,018] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:20:19,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:20:19,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:20:19,020] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:20:19,020] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:20:19,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:20:19,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:20:19,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:20:19,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:20:19,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:20:19,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:20:19,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:20:19,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:20:19,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:20:19,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:20:19,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:20:19,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:20:19,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:20:19,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:20:19,025] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:20:19,025] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:20:19,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:20:19,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:20:19,027] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:20:19,027] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:20:19,040] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:20:24,245] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:20:24,423] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:20:24,423] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:21:58,824] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\image_views.py changed, reloading. +[2025-11-20 22:21:59,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:21:59,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:21:59,725] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:21:59,725] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:21:59,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:21:59,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:21:59,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:21:59,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:21:59,728] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:21:59,728] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:21:59,728] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:21:59,728] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:21:59,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:21:59,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:21:59,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:21:59,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:21:59,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:21:59,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:21:59,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:21:59,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:21:59,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:21:59,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:21:59,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:21:59,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:21:59,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:21:59,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:21:59,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:21:59,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:21:59,744] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:24:24,319] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:24:24,319] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:24:24,319] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:24:24,319] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:24:24,320] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:24:24,320] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:24:24,321] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:24:24,321] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:24:24,322] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:24:24,322] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:24:24,322] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:24:24,322] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:24:24,323] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:24:24,323] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:24:24,323] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:24:24,323] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:24:24,324] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:24:24,324] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:24:24,324] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:24:24,324] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:24:24,325] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:24:24,325] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:24:24,325] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:24:24,325] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:24:24,328] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:24:24,328] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:24:24,328] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:24:24,328] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:24:25,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:24:25,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:24:25,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:24:25,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:24:25,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:24:25,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:24:25,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:24:25,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:24:25,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:24:25,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:24:25,024] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:24:25,024] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:24:25,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:24:25,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:24:25,026] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:24:25,026] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:24:25,026] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:24:25,026] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:24:25,028] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:24:25,028] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:24:25,029] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:24:25,029] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:24:25,029] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:24:25,029] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:24:25,030] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:24:25,030] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:24:25,030] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:24:25,030] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:24:25,043] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:24:28,020] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:24:28,024] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:24:28,063] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:24:28,063] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:24:29,093] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:24:29,422] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:25:44,615] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:25:44,615] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:25:44,615] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:25:44,615] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:25:44,616] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:25:44,616] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:25:44,616] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:25:44,616] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:25:44,617] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:25:44,617] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:25:44,618] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:25:44,618] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:25:44,620] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:25:44,620] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:25:44,620] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:25:44,620] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:25:44,622] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:25:44,622] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:25:44,623] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:25:44,623] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:25:44,624] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:25:44,624] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:25:44,624] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:25:44,624] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:25:44,625] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:25:44,625] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:25:44,626] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:25:44,626] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:25:45,350] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:25:45,350] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:25:45,350] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:25:45,350] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:25:45,351] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:25:45,351] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:25:45,351] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:25:45,351] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:25:45,353] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:25:45,353] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:25:45,353] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:25:45,353] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:25:45,354] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:25:45,354] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:25:45,354] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:25:45,354] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:25:45,354] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:25:45,354] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:25:45,355] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:25:45,355] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:25:45,355] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:25:45,355] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:25:45,356] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:25:45,356] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:25:45,357] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:25:45,357] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:25:45,357] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:25:45,357] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:25:45,370] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:25:48,137] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:25:48,141] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:25:48,304] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:25:48,304] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:25:49,385] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:25:49,683] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:26:08,829] ERROR [blog.image_views.markdown_image_upload:98 image_views] 图片上传失败: (1048, "Column 'article_id' cannot be null") +[2025-11-20 22:26:11,527] ERROR [blog.image_views.markdown_image_upload:98 image_views] 图片上传失败: (1048, "Column 'article_id' cannot be null") +[2025-11-20 22:26:58,507] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:26:58,507] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:26:58,508] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:26:58,508] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:26:58,510] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:26:58,510] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:26:58,511] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:26:58,511] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:26:58,512] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:26:58,512] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:26:58,512] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:26:58,512] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:26:58,513] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:26:58,513] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:26:58,513] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:26:58,513] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:26:58,514] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:26:58,514] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:26:58,514] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:26:58,514] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:26:58,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:26:58,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:26:58,516] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:26:58,516] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:26:58,518] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:26:58,518] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:26:58,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:26:58,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:27:27,867] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:27:27,867] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:27:27,867] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:27:27,867] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:27:27,868] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:27:27,868] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:27:27,869] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:27:27,869] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:27:27,870] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:27:27,870] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:27:27,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:27:27,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:27:27,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:27:27,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:27:27,871] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:27:27,871] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:27:27,872] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:27:27,872] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:27:27,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:27:27,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:27:27,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:27:27,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:27:27,874] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:27:27,874] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:27:27,875] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:27:27,875] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:27:27,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:27:27,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:29:24,420] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:29:24,420] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:29:24,420] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:29:24,420] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:29:24,421] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:29:24,421] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:29:24,421] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:29:24,421] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:29:24,422] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:29:24,422] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:29:24,422] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:29:24,422] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:29:24,423] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:29:24,423] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:29:24,423] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:29:24,423] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:29:24,424] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:29:24,424] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:29:24,425] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:29:24,425] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:29:24,425] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:29:24,425] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:29:24,426] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:29:24,426] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:29:24,426] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:29:24,426] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:29:24,426] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:29:24,426] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:32:04,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:32:04,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:32:04,370] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:32:04,370] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:32:04,371] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:32:04,371] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:32:04,372] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:32:04,372] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:32:04,373] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:32:04,373] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:32:04,373] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:32:04,373] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:32:04,374] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:32:04,374] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:32:04,374] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:32:04,374] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:32:04,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:32:04,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:32:04,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:32:04,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:32:04,376] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:32:04,376] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:32:04,376] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:32:04,376] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:32:04,377] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:32:04,377] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:32:04,377] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:32:04,377] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:32:05,078] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:32:05,078] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:32:05,079] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:32:05,079] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:32:05,080] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:32:05,080] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:32:05,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:32:05,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:32:05,081] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:32:05,081] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:32:05,082] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:32:05,082] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:32:05,083] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:32:05,083] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:32:05,083] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:32:05,083] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:32:05,084] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:32:05,084] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:32:05,084] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:32:05,084] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:32:05,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:32:05,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:32:05,086] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:32:05,086] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:32:05,087] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:32:05,087] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:32:05,087] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:32:05,087] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:32:05,100] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:32:09,810] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:32:09,814] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:32:09,852] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:32:09,852] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:32:10,807] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:32:11,095] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:32:40,537] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/8.html"]} +[2025-11-20 22:32:40,537] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/8.html"]} +[2025-11-20 22:32:40,958] INFO [blog.models.comment_list:151 models] set article comments:8 +[2025-11-20 22:32:41,003] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:32:41,003] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:32:41,141] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:32:41,141] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:32:41,142] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:32:41,142] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:32:41,142] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:32:41,142] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:32:41,169] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:32:41,635] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:32:41,636] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:32:41,637] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:32:41,637] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:32:41,637] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:32:41,638] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:32:41,782] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:32:42,084] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:32:56,226] INFO [blog.models.comment_list:151 models] set article comments:8 +[2025-11-20 22:32:56,398] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:32:56,398] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:32:56,399] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:32:56,399] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:32:56,399] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:32:56,399] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:32:56,902] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:32:56,903] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:32:56,903] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:32:56,903] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:32:56,904] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:32:56,904] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:32:59,155] INFO [blog.models.comment_list:151 models] set article comments:8 +[2025-11-20 22:32:59,325] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:32:59,325] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:32:59,325] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:32:59,325] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:32:59,325] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:32:59,325] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:32:59,811] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:32:59,812] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:32:59,812] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:32:59,813] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:32:59,813] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:32:59,814] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:33:33,533] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/8.html"]} +[2025-11-20 22:33:33,533] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/8.html"]} +[2025-11-20 22:33:33,935] INFO [blog.models.comment_list:151 models] set article comments:8 +[2025-11-20 22:33:33,967] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:33:33,967] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:33:34,091] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:33:34,092] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:33:34,092] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:33:34,093] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:33:34,093] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:33:34,093] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:33:34,117] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:33:34,556] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:33:34,556] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:33:34,557] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=7, 标题='1', 长度=1 +[2025-11-20 22:33:34,557] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:33:34,558] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:33:34,558] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:33:34,688] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:33:34,949] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:34:09,653] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\article_delete_view.py changed, reloading. +[2025-11-20 22:34:10,656] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:34:10,656] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:34:10,657] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:34:10,657] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:34:10,658] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:34:10,658] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:34:10,658] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:34:10,658] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:34:10,659] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:34:10,659] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:34:10,660] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:34:10,660] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:34:10,661] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:34:10,661] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:34:10,662] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:34:10,662] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:34:10,663] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:34:10,663] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:34:10,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:34:10,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:34:10,664] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:34:10,664] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:34:10,664] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:34:10,664] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:34:10,665] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:34:10,665] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:34:10,665] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:34:10,665] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:34:10,679] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:36:01,498] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:36:01,498] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:36:01,498] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:36:01,498] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:36:01,499] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:36:01,499] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:36:01,500] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:36:01,500] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:36:01,501] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:36:01,501] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:36:01,501] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:36:01,501] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:36:01,502] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:36:01,502] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:36:01,502] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:36:01,502] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:36:01,503] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:36:01,503] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:36:01,503] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:36:01,503] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:36:01,504] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:36:01,504] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:36:01,505] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:36:01,505] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:36:01,505] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:36:01,505] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:36:01,505] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:36:01,505] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:36:02,208] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:36:02,208] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:36:02,208] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:36:02,208] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:36:02,210] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:36:02,210] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:36:02,210] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:36:02,210] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:36:02,211] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:36:02,211] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:36:02,211] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:36:02,211] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:36:02,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:36:02,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:36:02,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:36:02,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:36:02,213] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:36:02,213] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:36:02,213] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:36:02,213] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:36:02,215] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:36:02,215] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:36:02,215] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:36:02,215] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:36:02,217] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:36:02,217] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:36:02,217] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:36:02,217] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:36:02,228] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:36:08,728] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:36:08,957] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:36:08,957] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:36:12,563] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:36:13,583] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:36:13,905] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:36:52,176] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/9.html"]} +[2025-11-20 22:36:52,176] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/9.html"]} +[2025-11-20 22:36:52,545] INFO [blog.models.comment_list:151 models] set article comments:9 +[2025-11-20 22:36:52,718] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:36:52,718] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:36:52,879] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:36:52,880] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:36:52,881] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:36:52,881] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=8, 标题='22', 长度=2 +[2025-11-20 22:36:52,881] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:36:52,882] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:36:52,903] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:36:53,356] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:36:53,356] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:36:53,357] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:36:53,357] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=8, 标题='22', 长度=2 +[2025-11-20 22:36:53,357] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:36:53,357] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:36:53,509] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:36:53,825] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:36:59,598] INFO [blog.models.comment_list:151 models] set article comments:9 +[2025-11-20 22:36:59,751] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:36:59,751] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:36:59,752] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:36:59,752] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=8, 标题='22', 长度=2 +[2025-11-20 22:36:59,753] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:36:59,753] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:37:00,180] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:37:00,180] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:37:00,181] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:37:00,181] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=8, 标题='22', 长度=2 +[2025-11-20 22:37:00,181] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:37:00,182] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:37:13,108] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-20 22:37:13,612] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:37:13,976] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-20 22:37:19,685] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-20 22:37:26,727] INFO [blog.models.comment_list:151 models] set article comments:9 +[2025-11-20 22:37:26,872] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:37:26,873] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:37:26,873] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:37:26,873] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=8, 标题='22', 长度=2 +[2025-11-20 22:37:26,874] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:37:26,874] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:37:27,311] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:37:27,311] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:37:27,312] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:37:27,312] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=8, 标题='22', 长度=2 +[2025-11-20 22:37:27,313] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:37:27,313] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:37:33,083] INFO [blog.models.comment_list:151 models] set article comments:8 +[2025-11-20 22:37:33,212] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:37:33,212] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:37:33,212] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-20 22:37:33,212] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:37:33,213] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:37:33,213] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:37:33,632] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:37:33,633] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:37:33,633] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-20 22:37:33,633] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:37:33,633] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:37:33,633] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:37:51,840] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:37:52,696] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:37:52,845] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:38:13,945] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/9.html"]} +[2025-11-20 22:38:13,945] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/9.html"]} +[2025-11-20 22:38:14,307] INFO [blog.models.comment_list:151 models] set article comments:9 +[2025-11-20 22:38:14,356] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:38:14,356] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:38:14,484] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:38:14,485] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:38:14,486] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:38:14,486] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:38:14,486] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:38:14,510] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:38:14,912] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 22:38:14,912] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:38:14,913] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:38:14,913] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:38:14,914] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:38:15,020] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:38:15,303] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 22:40:04,147] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\views.py changed, reloading. +[2025-11-20 22:40:05,186] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:40:05,186] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:40:05,187] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:40:05,187] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:40:05,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:40:05,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:40:05,188] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:40:05,188] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:40:05,190] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:40:05,190] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:40:05,190] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:40:05,190] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:40:05,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:40:05,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:40:05,191] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:40:05,191] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:40:05,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:40:05,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:40:05,192] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:40:05,192] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:40:05,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:40:05,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:40:05,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:40:05,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:40:05,194] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:40:05,194] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:40:05,195] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:40:05,195] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:40:05,207] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:40:20,733] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:40:20,733] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:40:20,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:40:20,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:40:20,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:40:20,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:40:20,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:40:20,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:40:20,737] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:40:20,737] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:40:20,737] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:40:20,737] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:40:20,738] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:40:20,738] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:40:20,738] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:40:20,738] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:40:20,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:40:20,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:40:20,740] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:40:20,740] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:40:20,741] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:40:20,741] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:40:20,741] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:40:20,741] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:40:20,742] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:40:20,742] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:40:20,743] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:40:20,743] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:40:21,488] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:40:21,488] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 22:40:21,489] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:40:21,489] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 22:40:21,490] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:40:21,490] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 22:40:21,490] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:40:21,490] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 22:40:21,491] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:40:21,491] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 22:40:21,491] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:40:21,491] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 22:40:21,492] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:40:21,492] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 22:40:21,493] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:40:21,493] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 22:40:21,493] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:40:21,493] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 22:40:21,494] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:40:21,494] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 22:40:21,495] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:40:21,495] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 22:40:21,495] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:40:21,495] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 22:40:21,497] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:40:21,497] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 22:40:21,497] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:40:21,497] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 22:40:21,512] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 22:40:25,311] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:40:25,460] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:40:25,460] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:40:30,198] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 22:40:31,109] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:40:31,414] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 22:40:55,463] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/10.html"]} +[2025-11-20 22:40:55,463] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_valid":["https://localhost:8000/article/2025/11/20/10.html"]} +[2025-11-20 22:40:55,831] INFO [blog.models.comment_list:151 models] set article comments:10 +[2025-11-20 22:40:55,896] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:40:55,896] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 22:40:56,047] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:40:56,048] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=9, 标题='2', 长度=1 +[2025-11-20 22:40:56,049] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:40:56,049] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:40:56,049] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:40:56,050] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:40:56,077] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 22:40:56,568] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-20 22:40:56,568] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=9, 标题='2', 长度=1 +[2025-11-20 22:40:56,569] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 22:40:56,569] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-20 22:40:56,569] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 22:40:56,571] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 22:40:56,719] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 22:40:57,051] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-22 23:24:14,159] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:14,159] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:14,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:14,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:14,169] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:14,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:14,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:14,188] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:14,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:14,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:14,199] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:14,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:14,219] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:14,219] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:14,220] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:14,220] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:20,151] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:20,151] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:24:20,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:20,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:24:20,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:20,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:24:20,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:20,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:20,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:20,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:20,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:20,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:20,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:24:20,330] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:24:35,091] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:24:35,129] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:24:35,174] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:24:35,174] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:24:36,829] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:24:37,149] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:24:48,921] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:archives +[2025-11-22 23:25:36,329] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:25:56,432] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-22 23:25:56,600] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:25:56,601] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:25:56,602] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:25:57,154] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:25:57,154] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:25:57,155] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:25:57,315] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:25:57,486] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-22 23:26:55,112] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:31:57,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:31:57,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:31:57,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:31:57,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:31:57,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:31:57,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:31:57,285] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:31:57,285] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:31:57,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:31:57,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:31:57,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:31:57,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:31:57,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:31:57,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:31:57,309] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:31:57,309] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:32:02,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:32:02,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:32:02,636] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:32:02,636] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:32:02,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:32:02,644] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:32:02,644] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:32:02,645] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:32:02,645] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:32:02,648] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:32:02,648] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:32:02,649] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:32:02,649] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:32:02,653] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:32:02,659] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:32:02,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:32:02,779] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:32:27,021] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:32:27,032] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:32:27,083] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:32:27,083] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:32:27,408] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:32:28,047] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:32:28,739] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:32:29,066] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:33:23,930] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-22 23:33:24,301] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:33:24,567] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-22 23:33:26,160] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-22 23:33:29,680] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-22 23:33:31,989] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_C_1 +[2025-11-22 23:33:33,693] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:33:34,945] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:37:43,585] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:43,585] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:43,586] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:43,586] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:43,589] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:43,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:43,599] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:43,599] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:43,600] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:43,600] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:43,603] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:43,608] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:43,612] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:48,852] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:48,852] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:37:48,853] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:48,853] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:48,858] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:48,863] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:37:48,867] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:48,867] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:37:48,868] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:48,868] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:37:48,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:48,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:37:48,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:48,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:37:48,875] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:48,875] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:37:48,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:48,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:48,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:37:48,995] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:38:10,383] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:38:10,396] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:38:10,434] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:38:10,434] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:38:10,759] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:38:11,321] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:38:11,954] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:38:12,275] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:38:32,039] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-22 23:38:32,595] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:38:32,795] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-22 23:38:37,701] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:38:39,029] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-22 23:38:40,252] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 +[2025-11-22 23:38:45,949] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-22 23:38:48,738] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C++_1 +[2025-11-22 23:38:50,004] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Python_1 +[2025-11-22 23:38:51,453] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:38:53,129] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:38:56,238] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-22 23:38:56,381] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:38:56,382] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:38:56,382] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:38:56,382] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:38:56,383] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:38:56,383] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:38:56,969] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:38:56,969] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:38:56,970] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:38:57,151] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:38:57,343] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-22 23:39:08,035] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:40:26,367] INFO [blog.models.comment_list:151 models] set article comments:1 +[2025-11-22 23:40:26,530] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:40:26,530] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=9, 标题='2', 长度=1 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=10, 标题='3', 长度=1 +[2025-11-22 23:40:26,531] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:40:27,149] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-22 23:40:27,149] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=9, 标题='2', 长度=1 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=10, 标题='3', 长度=1 +[2025-11-22 23:40:27,150] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-22 23:40:43,855] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:40:45,396] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Python_1 +[2025-11-22 23:40:46,966] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_C_1 +[2025-11-22 23:40:53,083] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-22 23:40:54,270] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-22 23:44:18,804] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:18,804] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:18,805] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:18,805] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:18,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:18,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:18,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:18,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:18,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:18,818] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:18,822] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:18,827] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:18,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:18,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:18,831] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:18,831] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:24,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:24,044] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:44:24,045] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:24,045] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:24,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:24,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:24,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:44:24,061] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:24,061] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:44:24,062] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:24,062] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:24,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:44:24,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:24,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:44:24,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:24,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:44:24,184] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:45:27,770] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:45:27,791] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:45:27,892] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:45:27,892] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:45:28,532] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:45:29,273] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:45:30,043] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:45:30,386] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:54:19,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:19,956] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:19,957] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:19,957] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:19,962] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:19,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:19,969] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:19,969] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:19,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:19,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:19,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:19,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:19,975] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:19,975] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:19,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:19,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:19,980] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:19,980] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:19,984] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:26,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:26,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:54:26,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:26,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:54:26,376] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:26,376] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:54:26,377] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:26,377] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:26,381] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:54:26,385] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:26,385] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:54:26,386] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:26,386] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:26,390] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:54:26,394] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:26,394] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:54:26,395] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:26,395] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:54:26,399] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:26,399] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:54:26,400] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:26,400] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:54:26,532] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:54:33,079] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:54:33,103] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:54:33,148] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:54:33,148] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:54:33,678] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:54:34,487] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:54:35,271] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:54:35,651] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-22 23:59:18,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:18,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:18,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:18,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:18,286] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:18,290] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:18,294] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:18,299] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:18,303] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:18,303] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:18,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:18,304] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:18,308] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:23,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:23,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-22 23:59:23,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:23,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:23,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-22 23:59:23,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:23,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-22 23:59:23,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:23,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-22 23:59:23,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:23,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-22 23:59:23,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:23,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-22 23:59:23,647] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:23,647] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-22 23:59:23,648] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:23,648] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:23,652] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:23,655] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-22 23:59:23,769] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-22 23:59:27,786] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-22 23:59:27,803] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-22 23:59:27,856] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:59:27,856] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-22 23:59:28,302] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-22 23:59:29,043] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-22 23:59:29,770] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-22 23:59:30,317] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 00:00:02,095] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-23 00:00:02,507] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 00:00:02,704] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-23 00:00:03,902] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 +[2025-11-23 00:00:05,464] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-23 00:00:06,872] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C++_1 +[2025-11-23 00:00:10,314] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:01:02,859] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:01:34,356] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:01:48,579] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:02:55,511] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:03:09,993] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-23 00:03:14,376] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:03:25,938] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:03:46,080] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:04:22,161] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:04:27,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:04:27,601] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:04:27,605] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:04:27,609] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:04:27,614] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:04:27,617] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:04:27,622] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:04:27,763] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:04:55,624] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\forms.py changed, reloading. +[2025-11-23 00:05:01,011] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:05:01,011] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:05:01,012] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:05:01,012] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:05:01,017] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:05:01,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:05:01,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:05:01,025] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:05:01,026] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:05:01,026] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:05:01,030] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:05:01,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:05:01,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:05:01,163] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:06:34,502] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\templatetags\blog_tags.py changed, reloading. +[2025-11-23 00:06:39,869] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:06:39,869] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:06:39,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:06:39,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:06:39,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:06:39,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:06:39,875] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:06:39,875] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:06:39,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:06:39,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:06:39,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:06:39,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:06:39,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:06:39,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:06:39,892] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:06:39,892] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:06:39,893] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:06:39,893] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:06:39,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:06:39,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:06:39,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:06:39,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:06:40,017] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:07:17,033] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:17,033] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:17,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:17,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:17,038] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:17,038] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:17,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:17,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:17,042] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:17,042] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:17,043] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:17,043] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:17,047] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:17,051] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:17,056] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:17,060] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:17,060] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:17,061] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:17,061] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:22,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:22,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:07:22,266] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:22,266] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:07:22,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:22,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:07:22,271] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:22,271] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:07:22,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:22,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:07:22,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:22,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:07:22,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:22,279] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:07:22,280] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:22,280] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:22,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:22,288] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:22,293] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:07:22,408] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:08:35,980] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:35,980] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:35,981] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:35,981] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:35,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:35,989] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:35,989] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:35,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:35,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:35,994] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:35,998] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:36,002] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:36,002] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:36,003] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:36,003] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:36,007] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:36,007] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:36,008] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:36,008] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:41,453] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:41,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:08:41,461] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:41,461] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:08:41,462] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:41,462] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:08:41,466] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:41,466] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:08:41,467] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:41,467] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:41,470] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:08:41,474] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:41,474] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:08:41,475] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:41,475] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:08:41,480] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:41,480] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:08:41,481] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:41,481] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:08:41,600] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:09:02,955] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\forms.py changed, reloading. +[2025-11-23 00:09:08,511] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:08,511] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:08,512] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:08,512] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:08,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:08,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:08,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:08,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:08,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:08,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:08,522] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:08,522] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:08,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:08,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:08,526] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:08,526] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:08,531] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:08,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:08,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:08,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:08,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:08,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:08,682] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:09:26,960] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:26,960] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:26,961] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:26,961] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:26,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:26,965] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:26,966] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:26,966] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:26,970] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:26,974] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:26,979] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:26,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:26,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:26,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:26,985] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:26,990] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:43,079] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:43,079] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:09:43,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:43,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:43,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:09:43,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:43,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:09:43,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:43,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:43,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:09:43,099] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:43,099] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:09:43,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:43,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:09:43,103] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:43,103] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:09:43,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:43,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:09:43,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:29,261] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:29,261] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:29,262] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:29,262] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:29,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:29,265] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:29,267] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:29,267] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:29,270] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:29,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:29,275] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:29,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:29,276] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:29,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:29,280] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:29,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:29,281] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:29,284] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:29,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:29,288] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:29,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:29,289] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:34,624] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:34,624] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:10:34,625] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:34,625] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:34,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:34,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:34,638] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:10:34,642] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:34,642] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:10:34,643] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:34,643] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:34,646] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:10:34,650] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:34,650] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:10:34,651] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:34,651] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:10:34,768] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:10:41,557] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 00:10:41,570] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 00:12:30,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:30,726] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:30,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:30,727] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:30,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:30,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:30,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:30,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:30,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:30,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:30,744] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:30,748] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:30,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:36,436] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-23 00:12:42,064] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:42,064] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:12:42,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:42,065] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:12:42,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:42,070] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:12:42,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:42,071] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:42,075] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:12:42,078] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:42,078] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:12:42,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:42,080] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:42,085] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:12:42,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:42,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:12:42,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:42,090] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:42,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:12:42,215] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:13:26,167] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:26,167] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:26,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:26,168] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:26,173] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:26,173] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:26,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:26,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:26,178] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:26,178] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:26,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:26,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:26,183] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:26,183] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:26,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:26,184] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:26,187] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:26,187] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:26,188] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:26,188] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:26,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:26,192] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:26,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:26,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:26,197] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:31,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:31,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:13:31,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:31,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:13:31,928] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:31,928] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:13:31,929] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:31,929] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:13:31,933] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:31,933] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:13:31,934] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:31,934] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:31,938] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:13:31,943] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:31,943] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:13:31,944] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:31,944] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:31,948] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:31,953] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:13:32,075] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:14:38,671] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:38,671] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:38,672] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:38,672] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:38,676] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:38,676] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:38,677] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:38,677] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:38,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:38,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:38,689] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:38,689] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:38,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:38,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:38,693] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:38,693] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:38,694] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:38,694] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:38,698] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:44,129] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:44,129] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:14:44,130] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:44,130] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:44,134] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:44,139] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:14:44,142] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:44,142] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:14:44,143] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:44,143] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:44,147] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:44,152] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:14:44,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:44,156] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:14:44,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:44,157] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:14:44,274] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:17:12,065] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\models.py changed, reloading. +[2025-11-23 00:17:17,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:17:17,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:17:17,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:17:17,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:17:17,540] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:17:17,544] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:17:17,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:17:17,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:17:17,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:17:17,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:17:17,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:17:17,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:17:17,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:17:17,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:17:17,560] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:17:17,564] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:17:17,686] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:18:17,826] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\templatetags\blog_tags.py changed, reloading. +[2025-11-23 00:18:23,185] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:18:23,185] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:18:23,186] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:18:23,186] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:18:23,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:18:23,191] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:18:23,192] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:18:23,192] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:18:23,195] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:18:23,195] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:18:23,196] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:18:23,196] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:18:23,200] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:18:23,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:18:23,208] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:18:23,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:18:23,337] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:20:26,745] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:26,745] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:26,746] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:26,746] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:26,751] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:26,751] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:26,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:26,752] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:26,757] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:26,757] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:26,758] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:26,758] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:26,764] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:26,764] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:26,765] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:26,765] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:26,770] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:26,777] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:26,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:33,820] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:33,820] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:20:33,821] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:33,821] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:20:33,825] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:33,825] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:20:33,826] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:33,826] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:33,830] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:20:33,834] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:33,834] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:20:33,835] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:33,835] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:20:33,838] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:33,838] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:20:33,840] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:33,840] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:33,844] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:33,849] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:20:33,970] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:20:39,729] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 00:20:39,752] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 00:20:39,880] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 00:20:39,880] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 00:20:40,421] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for admin@admin123.com +[2025-11-23 00:20:41,168] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-23 00:20:41,973] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 00:20:42,360] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 00:22:31,390] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:22:53,917] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:25:50,846] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:28:21,321] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:28:44,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:44,535] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:44,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:44,536] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:44,541] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:44,547] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:44,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:44,559] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:44,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:44,564] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:44,565] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:44,565] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:44,570] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:50,917] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:50,917] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:28:50,918] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:50,918] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:28:50,923] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:50,923] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:28:50,924] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:50,924] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:28:50,929] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:50,929] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:28:50,930] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:50,930] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:28:50,935] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:50,935] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:28:50,936] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:50,936] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:50,941] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:50,947] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:50,952] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:28:51,094] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:29:33,353] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:32:39,022] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:35:43,280] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:40:18,404] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:43:11,268] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:44:32,357] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:48:11,797] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:51:04,680] INFO [django.utils.autoreload.trigger_reload:266 autoreload] D:\touge\DjangoBlog\src\blog\forms.py changed, reloading. +[2025-11-23 00:51:12,911] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:51:12,911] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:51:12,912] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:51:12,912] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:51:12,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:51:12,924] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:51:12,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:51:12,925] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:51:12,936] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:51:12,936] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:51:12,937] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:51:12,937] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:51:12,950] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:51:12,964] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:51:12,964] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:51:12,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:51:12,965] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:51:12,977] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:51:12,977] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:51:12,978] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:51:12,978] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:51:12,991] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:51:13,171] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:53:57,703] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:53:57,703] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:53:57,704] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:53:57,704] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:53:57,709] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:53:57,709] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:53:57,709] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:53:57,709] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:53:57,713] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:53:57,713] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:53:57,713] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:53:57,713] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:53:57,717] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:53:57,717] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:53:57,717] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:53:57,717] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:53:57,721] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:53:57,721] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:53:57,721] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:53:57,721] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:53:57,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:53:57,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:53:57,726] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:53:57,726] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:53:57,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:53:57,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:53:57,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:53:57,731] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:54:04,713] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:54:04,713] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:54:04,714] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:54:04,714] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:54:04,718] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:54:04,718] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:54:04,718] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:54:04,718] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:54:04,722] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:54:04,722] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:54:04,722] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:54:04,722] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:54:04,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:54:04,725] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:54:04,726] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:54:04,726] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:54:04,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:54:04,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:54:04,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:54:04,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:54:04,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:54:04,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:54:04,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:54:04,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:54:04,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:54:04,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:54:04,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:54:04,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:54:04,851] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:54:09,009] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 00:54:09,030] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 00:54:09,209] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 00:54:09,209] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 00:54:10,653] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 00:54:10,966] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 00:54:20,658] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-23 00:54:21,017] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 00:54:21,197] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-23 00:54:22,183] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:54:22,874] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:55:38,097] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:55:38,097] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:55:38,098] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:55:38,098] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:55:38,102] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:55:38,102] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:55:38,102] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:55:38,102] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:55:38,107] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:55:38,107] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:55:38,107] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:55:38,107] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:55:38,114] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:55:38,114] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:55:38,115] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:55:38,115] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:55:38,120] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:55:38,120] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:55:38,121] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:55:38,121] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:55:38,126] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:55:38,126] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:55:38,127] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:55:38,127] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:55:38,133] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:55:38,133] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:55:38,134] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:55:38,134] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:55:44,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:55:44,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:55:44,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:55:44,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:55:44,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:55:44,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:55:44,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:55:44,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:55:44,738] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:55:44,738] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:55:44,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:55:44,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:55:44,742] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:55:44,742] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:55:44,743] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:55:44,743] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:55:44,747] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:55:44,747] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:55:44,747] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:55:44,747] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:55:44,753] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:55:44,753] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:55:44,753] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:55:44,753] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:55:44,758] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:55:44,758] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:55:44,759] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:55:44,759] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:55:44,887] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:55:48,888] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:59:16,808] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:59:16,808] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:59:16,808] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:59:16,808] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:59:16,812] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:59:16,812] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:59:16,812] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:59:16,812] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:59:16,818] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:59:16,818] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:59:16,818] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:59:16,818] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:59:16,823] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:59:16,823] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:59:16,823] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:59:16,823] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:59:16,827] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:59:16,827] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:59:16,828] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:59:16,828] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:59:16,832] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:59:16,832] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:59:16,833] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:59:16,833] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:59:16,837] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:59:16,837] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:59:16,838] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:59:16,838] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:59:22,691] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:59:22,691] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 00:59:22,692] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:59:22,692] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 00:59:22,696] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:59:22,696] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 00:59:22,697] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:59:22,697] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 00:59:22,700] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:59:22,700] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 00:59:22,701] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:59:22,701] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 00:59:22,705] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:59:22,705] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 00:59:22,707] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:59:22,707] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 00:59:22,712] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:59:22,712] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 00:59:22,712] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:59:22,712] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 00:59:22,716] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:59:22,716] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 00:59:22,717] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:59:22,717] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 00:59:22,722] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:59:22,722] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 00:59:22,722] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:59:22,722] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 00:59:22,856] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 00:59:28,223] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 00:59:32,281] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:category_list_Java_1 +[2025-11-23 00:59:33,570] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 +[2025-11-23 00:59:35,168] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 +[2025-11-23 00:59:36,395] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C++_1 +[2025-11-23 00:59:37,382] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-23 00:59:47,727] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:04:52,139] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:04:52,139] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:04:52,140] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:04:52,140] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:04:52,145] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:04:52,145] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:04:52,145] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:04:52,145] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:04:52,149] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:04:52,149] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:04:52,149] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:04:52,149] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:04:52,153] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:04:52,153] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:04:52,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:04:52,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:04:52,159] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:04:52,159] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:04:52,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:04:52,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:04:52,163] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:04:52,163] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:04:52,165] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:04:52,165] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:04:52,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:04:52,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:04:52,169] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:04:52,169] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:05:07,142] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:05:07,142] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:05:07,143] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:05:07,143] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:05:07,147] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:05:07,147] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:05:07,147] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:05:07,147] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:05:07,152] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:05:07,152] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:05:07,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:05:07,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:05:07,157] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:05:07,157] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:05:07,158] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:05:07,158] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:05:07,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:05:07,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:05:07,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:05:07,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:05:07,167] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:05:07,167] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:05:07,167] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:05:07,167] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:05:07,172] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:05:07,172] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:05:07,172] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:05:07,172] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:06:28,679] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:06:28,679] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:06:28,680] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:06:28,680] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:06:28,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:06:28,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:06:28,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:06:28,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:06:28,689] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:06:28,689] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:06:28,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:06:28,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:06:28,693] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:06:28,693] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:06:28,695] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:06:28,695] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:06:28,701] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:06:28,701] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:06:28,701] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:06:28,701] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:06:28,706] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:06:28,706] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:06:28,706] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:06:28,706] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:06:28,710] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:06:28,710] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:06:28,710] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:06:28,710] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:06:34,348] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:06:34,348] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:06:34,349] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:06:34,349] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:06:34,353] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:06:34,353] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:06:34,353] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:06:34,353] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:06:34,357] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:06:34,357] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:06:34,358] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:06:34,358] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:06:34,361] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:06:34,361] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:06:34,362] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:06:34,362] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:06:34,365] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:06:34,365] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:06:34,366] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:06:34,366] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:06:34,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:06:34,370] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:06:34,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:06:34,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:06:34,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:06:34,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:06:34,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:06:34,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:06:34,498] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 01:06:38,771] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:10:56,060] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:13:42,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:13:42,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:13:42,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:13:42,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:13:42,788] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:13:42,788] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:13:42,789] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:13:42,789] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:13:42,793] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:13:42,793] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:13:42,793] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:13:42,793] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:13:42,797] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:13:42,797] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:13:42,797] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:13:42,797] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:13:42,802] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:13:42,802] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:13:42,803] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:13:42,803] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:13:42,807] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:13:42,807] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:13:42,808] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:13:42,808] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:13:42,812] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:13:42,812] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:13:42,813] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:13:42,813] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:13:51,178] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:13:51,178] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:13:51,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:13:51,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:13:51,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:13:51,184] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:13:51,185] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:13:51,185] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:13:51,189] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:13:51,189] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:13:51,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:13:51,189] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:13:51,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:13:51,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:13:51,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:13:51,193] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:13:51,200] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:13:51,200] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:13:51,201] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:13:51,201] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:13:51,205] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:13:51,205] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:13:51,205] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:13:51,205] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:13:51,211] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:13:51,211] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:13:51,211] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:13:51,211] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:14:01,013] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:14:01,013] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:14:01,015] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:14:01,015] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:14:01,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:14:01,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:14:01,019] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:14:01,019] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:14:01,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:14:01,024] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:14:01,024] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:14:01,024] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:14:01,028] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:14:01,028] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:14:01,029] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:14:01,029] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:14:01,033] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:14:01,033] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:14:01,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:14:01,034] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:14:01,038] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:14:01,038] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:14:01,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:14:01,039] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:14:01,043] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:14:01,043] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:14:01,043] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:14:01,043] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:14:06,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:14:06,739] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:14:06,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:14:06,739] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:14:06,743] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:14:06,743] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:14:06,743] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:14:06,743] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:14:06,748] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:14:06,748] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:14:06,748] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:14:06,748] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:14:06,753] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:14:06,753] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:14:06,753] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:14:06,753] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:14:06,759] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:14:06,759] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:14:06,759] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:14:06,759] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:14:06,763] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:14:06,763] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:14:06,763] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:14:06,763] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:14:06,767] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:14:06,767] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:14:06,768] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:14:06,768] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:14:06,895] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 01:14:11,018] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:19:06,662] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:06,662] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:06,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:06,663] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:06,668] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:06,668] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:06,668] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:06,668] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:06,672] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:06,672] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:06,672] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:06,672] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:06,678] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:06,678] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:06,678] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:06,678] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:06,682] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:06,682] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:06,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:06,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:06,687] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:06,687] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:06,687] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:06,687] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:06,691] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:06,691] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:06,692] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:06,692] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:20,467] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:20,467] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:20,467] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:20,467] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:20,472] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:20,472] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:20,472] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:20,472] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:20,475] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:20,475] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:20,477] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:20,477] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:20,481] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:20,481] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:20,482] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:20,482] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:20,487] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:20,487] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:20,487] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:20,487] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:20,491] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:20,491] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:20,492] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:20,492] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:20,496] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:20,496] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:20,496] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:20,496] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:47,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:47,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:47,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:47,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:47,788] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:47,788] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:47,789] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:47,789] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:47,793] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:47,793] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:47,794] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:47,794] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:47,799] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:47,799] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:47,800] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:47,800] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:47,804] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:47,804] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:47,805] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:47,805] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:47,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:47,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:47,811] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:47,811] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:47,815] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:47,815] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:47,816] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:47,816] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:53,447] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:53,447] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:19:53,447] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:53,447] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:19:53,452] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:53,452] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:19:53,452] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:53,452] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:19:53,456] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:53,456] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:19:53,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:53,457] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:19:53,461] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:53,461] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:19:53,461] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:53,461] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:19:53,465] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:53,465] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:19:53,466] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:53,466] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:19:53,470] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:53,470] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:19:53,471] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:53,471] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:19:53,475] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:53,475] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:19:53,476] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:53,476] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:19:53,600] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 01:19:59,958] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:20:29,315] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:21:56,543] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:21:56,543] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:21:56,544] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:21:56,544] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:21:56,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:21:56,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:21:56,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:21:56,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:21:56,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:21:56,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:21:56,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:21:56,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:21:56,557] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:21:56,557] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:21:56,558] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:21:56,558] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:21:56,563] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:21:56,563] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:21:56,564] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:21:56,564] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:21:56,567] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:21:56,567] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:21:56,568] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:21:56,568] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:21:56,572] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:21:56,572] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:21:56,572] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:21:56,572] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:12,885] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:22:12,885] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:22:12,886] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:22:12,886] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:22:12,890] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:22:12,890] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:22:12,891] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:22:12,891] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:22:12,895] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:22:12,895] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:22:12,895] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:22:12,895] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:22:12,899] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:22:12,899] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:22:12,899] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:22:12,899] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:22:12,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:22:12,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:22:12,904] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:22:12,904] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:22:12,908] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:22:12,908] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:22:12,909] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:22:12,909] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:22:12,914] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:22:12,914] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:22:12,914] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:12,914] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:29,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:22:29,193] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:22:29,194] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:22:29,194] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:22:29,198] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:22:29,198] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:22:29,199] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:22:29,199] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:22:29,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:22:29,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:22:29,203] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:22:29,203] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:22:29,207] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:22:29,207] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:22:29,207] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:22:29,207] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:22:29,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:22:29,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:22:29,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:22:29,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:22:29,217] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:22:29,217] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:22:29,218] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:22:29,218] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:22:29,222] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:22:29,222] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:22:29,223] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:29,223] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:34,849] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:22:34,849] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:22:34,850] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:22:34,850] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:22:34,854] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:22:34,854] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:22:34,855] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:22:34,855] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:22:34,859] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:22:34,859] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:22:34,859] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:22:34,859] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:22:34,863] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:22:34,863] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:22:34,863] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:22:34,863] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:22:34,868] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:22:34,868] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:22:34,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:22:34,870] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:22:34,873] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:22:34,873] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:22:34,873] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:22:34,873] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:22:34,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:22:34,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:22:34,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:34,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:22:35,012] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 01:22:39,743] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:28:32,670] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:28:32,670] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:28:32,670] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:28:32,670] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:28:32,673] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:28:32,673] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:28:32,673] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:28:32,673] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:28:32,675] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:28:32,675] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:28:32,675] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:28:32,675] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:28:32,677] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:28:32,677] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:28:32,677] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:28:32,677] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:28:32,680] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:28:32,680] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:28:32,680] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:28:32,680] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:28:32,683] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:28:32,683] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:28:32,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:28:32,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:28:32,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:28:32,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:28:32,686] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:28:32,686] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:28:33,347] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:28:33,347] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 01:28:33,347] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:28:33,347] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 01:28:33,348] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:28:33,348] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 01:28:33,348] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:28:33,348] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 01:28:33,350] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:28:33,350] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 01:28:33,350] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:28:33,350] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 01:28:33,351] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:28:33,351] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 01:28:33,351] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:28:33,351] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 01:28:33,352] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:28:33,352] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 01:28:33,352] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:28:33,352] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 01:28:33,353] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:28:33,353] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 01:28:33,354] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:28:33,354] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 01:28:33,354] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:28:33,354] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 01:28:33,355] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:28:33,355] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 01:28:33,366] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 01:28:36,265] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 01:28:36,270] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 01:28:36,402] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 01:28:36,402] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 01:28:37,568] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 01:28:37,850] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 01:29:02,549] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-23 01:29:02,698] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-23 01:29:02,701] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-23 01:29:02,702] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-23 01:29:02,702] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-23 01:29:02,703] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-23 01:29:02,703] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-23 01:29:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-23 01:29:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-23 01:29:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-23 01:29:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-23 01:29:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-23 01:29:03,238] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-23 01:29:03,398] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 01:29:03,550] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-23 01:29:03,783] INFO [blog.models.comment_list:151 models] set article comments:6 +[2025-11-23 01:29:04,090] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-23 01:29:04,091] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-23 01:29:04,091] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-23 01:29:04,091] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-23 01:29:04,091] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-23 01:29:04,091] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-23 01:29:04,670] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-23 01:29:04,670] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-23 01:29:04,672] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-23 01:29:04,672] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=10, 标题='3', 长度=1 +[2025-11-23 01:29:04,672] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-23 01:29:04,672] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-23 01:29:15,560] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 01:29:20,349] INFO [blog.models.comment_list:151 models] set article comments:10 +[2025-11-23 01:29:20,514] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-23 01:29:20,515] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-23 01:29:20,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-23 01:29:20,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-23 01:29:20,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-23 01:29:20,521] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-23 01:29:21,021] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 5, 有效推荐数量: 5 +[2025-11-23 01:29:21,023] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=6, 标题='二次元真恶心!', 长度=7 +[2025-11-23 01:29:21,024] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=9, 标题='2', 长度=1 +[2025-11-23 01:29:21,024] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-23 01:29:21,024] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-23 01:29:21,025] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 5: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-23 13:02:59,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 13:02:59,169] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 13:02:59,170] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 13:02:59,170] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 13:02:59,172] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 13:02:59,172] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 13:02:59,173] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 13:02:59,173] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 13:02:59,173] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 13:02:59,173] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 13:02:59,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 13:02:59,174] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 13:02:59,174] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 13:02:59,174] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 13:02:59,175] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 13:02:59,175] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 13:02:59,177] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 13:02:59,177] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 13:02:59,178] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 13:02:59,178] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 13:02:59,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 13:02:59,179] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 13:02:59,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 13:02:59,179] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 13:02:59,181] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 13:02:59,181] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 13:02:59,181] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 13:02:59,181] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 13:03:00,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 13:03:00,212] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 13:03:00,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 13:03:00,212] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 13:03:00,213] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 13:03:00,213] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 13:03:00,214] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 13:03:00,214] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 13:03:00,214] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 13:03:00,214] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 13:03:00,215] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 13:03:00,215] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 13:03:00,215] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 13:03:00,215] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 13:03:00,216] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 13:03:00,216] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 13:03:00,216] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 13:03:00,216] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 13:03:00,217] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 13:03:00,217] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 13:03:00,217] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 13:03:00,217] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 13:03:00,218] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 13:03:00,218] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 13:03:00,218] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 13:03:00,218] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 13:03:00,219] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 13:03:00,219] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 13:03:00,230] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 13:03:19,902] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 13:03:19,929] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 13:03:20,177] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 13:03:20,177] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 13:03:21,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 13:03:22,355] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-23 13:06:53,751] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-23 20:22:45,981] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 20:22:45,981] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 20:22:45,982] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 20:22:45,982] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 20:22:45,983] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 20:22:45,983] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 20:22:45,983] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 20:22:45,983] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 20:22:45,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 20:22:45,984] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 20:22:45,984] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 20:22:45,984] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 20:22:45,986] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 20:22:45,986] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 20:22:45,986] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 20:22:45,986] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 20:22:45,988] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 20:22:45,988] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 20:22:45,988] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 20:22:45,988] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 20:22:45,989] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 20:22:45,989] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 20:22:45,989] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 20:22:45,989] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 20:22:45,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 20:22:45,991] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 20:22:45,991] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 20:22:45,991] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 20:22:46,971] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 20:22:46,971] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-23 20:22:46,971] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 20:22:46,971] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-23 20:22:46,972] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 20:22:46,972] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-23 20:22:46,972] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 20:22:46,972] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-23 20:22:46,972] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 20:22:46,972] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-23 20:22:46,974] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 20:22:46,974] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-23 20:22:46,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 20:22:46,974] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-23 20:22:46,975] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 20:22:46,975] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-23 20:22:46,975] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 20:22:46,975] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-23 20:22:46,976] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 20:22:46,976] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-23 20:22:46,976] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 20:22:46,976] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-23 20:22:46,977] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 20:22:46,977] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-23 20:22:46,977] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 20:22:46,977] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-23 20:22:46,978] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 20:22:46,978] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-23 20:22:46,993] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-23 20:23:01,823] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-23 20:23:01,853] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-23 20:23:02,053] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 20:23:02,053] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-23 20:23:08,807] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-23 20:23:10,690] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari diff --git a/src/media/backgrounds/test_bg.jpg b/src/media/backgrounds/test_bg.jpg new file mode 100644 index 0000000..98c8115 --- /dev/null +++ b/src/media/backgrounds/test_bg.jpg @@ -0,0 +1,2 @@ + +iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChAI9jU77yQAAAABJRU5ErkJggg== diff --git a/src/oauth/__pycache__/__init__.cpython-311.pyc b/src/oauth/__pycache__/__init__.cpython-311.pyc index ea150ab..9239b15 100644 Binary files a/src/oauth/__pycache__/__init__.cpython-311.pyc and b/src/oauth/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/admin.cpython-311.pyc b/src/oauth/__pycache__/admin.cpython-311.pyc index 944b692..ab8fcc1 100644 Binary files a/src/oauth/__pycache__/admin.cpython-311.pyc and b/src/oauth/__pycache__/admin.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/apps.cpython-311.pyc b/src/oauth/__pycache__/apps.cpython-311.pyc index 7544da2..b1c483d 100644 Binary files a/src/oauth/__pycache__/apps.cpython-311.pyc and b/src/oauth/__pycache__/apps.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/forms.cpython-311.pyc b/src/oauth/__pycache__/forms.cpython-311.pyc index 2765c9a..00eec3d 100644 Binary files a/src/oauth/__pycache__/forms.cpython-311.pyc and b/src/oauth/__pycache__/forms.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/models.cpython-311.pyc b/src/oauth/__pycache__/models.cpython-311.pyc index 14be4c6..d024d0c 100644 Binary files a/src/oauth/__pycache__/models.cpython-311.pyc and b/src/oauth/__pycache__/models.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/oauthmanager.cpython-311.pyc b/src/oauth/__pycache__/oauthmanager.cpython-311.pyc index e122471..287a561 100644 Binary files a/src/oauth/__pycache__/oauthmanager.cpython-311.pyc and b/src/oauth/__pycache__/oauthmanager.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/urls.cpython-311.pyc b/src/oauth/__pycache__/urls.cpython-311.pyc index 93f5f7b..a435938 100644 Binary files a/src/oauth/__pycache__/urls.cpython-311.pyc and b/src/oauth/__pycache__/urls.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/views.cpython-311.pyc b/src/oauth/__pycache__/views.cpython-311.pyc index 1503f3c..132290f 100644 Binary files a/src/oauth/__pycache__/views.cpython-311.pyc and b/src/oauth/__pycache__/views.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc index 13fca2f..fec5d0b 100644 Binary files a/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc b/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc index 114bdd2..712d8dc 100644 Binary files a/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc b/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc index d1b7c08..6e52685 100644 Binary files a/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc b/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc index 7f5dc49..38f05bb 100644 Binary files a/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc and b/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc b/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc index 6d11ed2..386770a 100644 Binary files a/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc b/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc index 7f2bb07..8a2e1eb 100644 Binary files a/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc and b/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/__init__.cpython-311.pyc b/src/owntracks/__pycache__/__init__.cpython-311.pyc index fe145ca..53c8077 100644 Binary files a/src/owntracks/__pycache__/__init__.cpython-311.pyc and b/src/owntracks/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/admin.cpython-311.pyc b/src/owntracks/__pycache__/admin.cpython-311.pyc index a166500..77642e0 100644 Binary files a/src/owntracks/__pycache__/admin.cpython-311.pyc and b/src/owntracks/__pycache__/admin.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/apps.cpython-311.pyc b/src/owntracks/__pycache__/apps.cpython-311.pyc index d489fa2..646a028 100644 Binary files a/src/owntracks/__pycache__/apps.cpython-311.pyc and b/src/owntracks/__pycache__/apps.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/models.cpython-311.pyc b/src/owntracks/__pycache__/models.cpython-311.pyc index eb4a923..4aff70c 100644 Binary files a/src/owntracks/__pycache__/models.cpython-311.pyc and b/src/owntracks/__pycache__/models.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/urls.cpython-311.pyc b/src/owntracks/__pycache__/urls.cpython-311.pyc index 3e667fe..f4258bc 100644 Binary files a/src/owntracks/__pycache__/urls.cpython-311.pyc and b/src/owntracks/__pycache__/urls.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/views.cpython-311.pyc b/src/owntracks/__pycache__/views.cpython-311.pyc index c1aeb6b..319fdfb 100644 Binary files a/src/owntracks/__pycache__/views.cpython-311.pyc and b/src/owntracks/__pycache__/views.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc index 57892bb..86d0162 100644 Binary files a/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc b/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc index 1fed633..58165f4 100644 Binary files a/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc b/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc index a01f9cb..098fff0 100644 Binary files a/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/__pycache__/__init__.cpython-311.pyc b/src/plugins/__pycache__/__init__.cpython-311.pyc index 9c02a78..22e9605 100644 Binary files a/src/plugins/__pycache__/__init__.cpython-311.pyc and b/src/plugins/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc b/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc index 84122cb..f6fa56c 100644 Binary files a/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc and b/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc b/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc index 61a1311..105e48d 100644 Binary files a/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc and b/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc b/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc index f9a74fe..9dd0023 100644 Binary files a/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc and b/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc b/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc index c6a8c65..577ba41 100644 Binary files a/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc and b/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc b/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc index e3769bc..a9b8116 100644 Binary files a/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc and b/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc b/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc index 02b4df3..e6d6665 100644 Binary files a/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc and b/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc b/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc index d64914b..f2f156e 100644 Binary files a/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc and b/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc b/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc index 86ecbe0..3279727 100644 Binary files a/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc and b/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc b/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc index 2e1851f..db6a312 100644 Binary files a/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc and b/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc b/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc index fcbba00..cadf641 100644 Binary files a/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc and b/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc b/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc index 0473a47..fb64fe9 100644 Binary files a/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc and b/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc b/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc index f793500..47f53d2 100644 Binary files a/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc and b/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc b/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc index 287c667..d9b378c 100644 Binary files a/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc and b/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc b/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc index 0a7b862..5465e24 100644 Binary files a/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc and b/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc b/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc index a673789..576c660 100644 Binary files a/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc and b/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/__init__.cpython-311.pyc b/src/servermanager/__pycache__/__init__.cpython-311.pyc index 01321cd..91adeac 100644 Binary files a/src/servermanager/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/admin.cpython-311.pyc b/src/servermanager/__pycache__/admin.cpython-311.pyc index 2a2c95b..48a9e9c 100644 Binary files a/src/servermanager/__pycache__/admin.cpython-311.pyc and b/src/servermanager/__pycache__/admin.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/apps.cpython-311.pyc b/src/servermanager/__pycache__/apps.cpython-311.pyc index 800626a..13196d1 100644 Binary files a/src/servermanager/__pycache__/apps.cpython-311.pyc and b/src/servermanager/__pycache__/apps.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/models.cpython-311.pyc b/src/servermanager/__pycache__/models.cpython-311.pyc index 3d3ace9..fa4d47d 100644 Binary files a/src/servermanager/__pycache__/models.cpython-311.pyc and b/src/servermanager/__pycache__/models.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/robot.cpython-311.pyc b/src/servermanager/__pycache__/robot.cpython-311.pyc index 74c54e9..f5f6912 100644 Binary files a/src/servermanager/__pycache__/robot.cpython-311.pyc and b/src/servermanager/__pycache__/robot.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/urls.cpython-311.pyc b/src/servermanager/__pycache__/urls.cpython-311.pyc index 52b2842..67f8f37 100644 Binary files a/src/servermanager/__pycache__/urls.cpython-311.pyc and b/src/servermanager/__pycache__/urls.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/__init__.cpython-311.pyc b/src/servermanager/api/__pycache__/__init__.cpython-311.pyc index 7626632..6f40136 100644 Binary files a/src/servermanager/api/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/api/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc b/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc index 99e76df..f7a93e0 100644 Binary files a/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc and b/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc b/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc index 5129c92..9ccfc07 100644 Binary files a/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc and b/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc index 82cbef5..ce3b02a 100644 Binary files a/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc b/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc index 90d91e4..551d4ba 100644 Binary files a/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc b/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc index c9deb10..2fc2c92 100644 Binary files a/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/templates/blog/article_create.html b/src/templates/blog/article_create.html new file mode 100644 index 0000000..171f900 --- /dev/null +++ b/src/templates/blog/article_create.html @@ -0,0 +1,298 @@ +{% extends "share_layout/base.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{% trans "Create Article" %}{% endblock %} + +{% block header %} +{{ block.super }} + + + + +{% endblock %} + +{% block content %} +
+
+
+

{% trans "Create Article" %}

+
+ {% csrf_token %} +
+ + {{ form.title }} + {% if form.title.errors %} +
+ {{ form.title.errors }} +
+ {% endif %} +
+ +
+ + {{ form.body }} + {% if form.body.errors %} +
+ {{ form.body.errors }} +
+ {% endif %} +
+ +
+
+
+ +
+
+ + {{ form.status }} + {% if form.status.errors %} +
+ {{ form.status.errors }} +
+ {% endif %} +
+ +
+ + {{ form.comment_status }} + {% if form.comment_status.errors %} +
+ {{ form.comment_status.errors }} +
+ {% endif %} +
+
+ +
+
+ + {{ form.type }} + {% if form.type.errors %} +
+ {{ form.type.errors }} +
+ {% endif %} +
+ +
+ + {{ form.category }} + + {% for category in all_categories %} + + {% if form.category.errors %} +
+ {{ form.category.errors }} +
+ {% endif %} +
+
+ +
+ + {{ form.tags }} + + {% for tag in all_tags %} + + {% if form.tags.errors %} +
+ {{ form.tags.errors }} +
+ {% endif %} +
+ +
+ {{ form.show_toc }} + + {% if form.show_toc.errors %} +
+ {{ form.show_toc.errors }} +
+ {% endif %} +
+ +
+ + {% trans "取消" %} +
+
+
+
+
+{% block extra_js %} + + + +{% endblock %} + +{% endblock %} \ No newline at end of file diff --git a/src/templates/blog/article_delete_confirm.html b/src/templates/blog/article_delete_confirm.html new file mode 100644 index 0000000..c116284 --- /dev/null +++ b/src/templates/blog/article_delete_confirm.html @@ -0,0 +1,56 @@ +{% extends "share_layout/base.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{% trans "Delete Article" %}{% endblock %} + +{% block content %} +
+
+
+
+
+

{% trans "Delete Article" %}: {{ article.title }}

+
+
+
+

{% trans "Warning" %}

+

{% trans "You are about to delete this article. This action cannot be undone." %}

+

{% trans "All associated images will also be deleted." %}

+
+ +
+
{% trans "Article Details" %}
+
    +
  • {% trans "Title" %}: {{ article.title }}
  • +
  • {% trans "Created" %}: {{ article.creation_time|date:"Y-m-d H:i" }}
  • +
  • {% trans "Modified" %}: {{ article.last_modify_time|date:"Y-m-d H:i" }}
  • +
  • {% trans "Category" %}: {{ article.category.name }}
  • +
  • {% trans "Tags" %}: + {% for tag in article.tags.all %} + {{ tag.name }}{% if not forloop.last %}, {% endif %} + {% empty %} + {% trans "None" %} + {% endfor %} +
  • +
+
+ +
+ {% csrf_token %} + +
+ + + {% trans "Cancel" %} + +
+
+
+
+
+
+
+{% endblock %} diff --git a/src/templates/blog/article_edit.html b/src/templates/blog/article_edit.html new file mode 100644 index 0000000..81722f2 --- /dev/null +++ b/src/templates/blog/article_edit.html @@ -0,0 +1,354 @@ +{% extends "share_layout/base.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{% trans "Edit Article" %}{% endblock %} + +{% block header %} +{{ block.super }} + + + + +{% endblock %} + +{% block content %} +
+
+
+

{% trans "Edit Article" %}: {{ article.title }}

+
+ {% csrf_token %} +
+ + {{ form.title }} + {% if form.title.errors %} +
+ {{ form.title.errors }} +
+ {% endif %} +
+ +
+ + {{ form.body }} + {% if form.body.errors %} +
+ {{ form.body.errors }} +
+ {% endif %} +
+ +
+ {% for image in article.images.all %} +
+
+ {{ image.description|default:'图片' }} +
+

{{ image.description|default:'无描述' }}

+
+ + +
+
+
+
+ {% endfor %} +
+
+
+ +
+
+ + {{ form.status }} + {% if form.status.errors %} +
+ {{ form.status.errors }} +
+ {% endif %} +
+ +
+ + {{ form.comment_status }} + {% if form.comment_status.errors %} +
+ {{ form.comment_status.errors }} +
+ {% endif %} +
+
+ +
+
+ + {{ form.type }} + {% if form.type.errors %} +
+ {{ form.type.errors }} +
+ {% endif %} +
+ +
+ + {{ form.category }} + + {% for category in all_categories %} + +
选择现有分类或创建新分类
+ {% if form.category.errors %} +
+ {{ form.category.errors }} +
+ {% endif %} +
+
+ +
+ + {{ form.tags }} + + {% for tag in all_tags %} + +
选择现有标签或创建新标签,多个标签用逗号分隔
+ {% if form.tags.errors %} +
+ {{ form.tags.errors }} +
+ {% endif %} +
+ +
+ {{ form.show_toc }} + + {% if form.show_toc.errors %} +
+ {{ form.show_toc.errors }} +
+ {% endif %} +
+ + +
+
+
+
+{% block extra_js %} + + + +{% endblock %} + +{% endblock %} \ No newline at end of file diff --git a/src/templates/blog/background_selector.html b/src/templates/blog/background_selector.html new file mode 100644 index 0000000..7aaf4dd --- /dev/null +++ b/src/templates/blog/background_selector.html @@ -0,0 +1,257 @@ + +{% load static %} + +
+ +
+ + +
+
+
选择背景图片
+
+ +
+
+
+ + +
+
+ + + + diff --git a/src/templates/blog/image_upload.html b/src/templates/blog/image_upload.html new file mode 100644 index 0000000..65c309b --- /dev/null +++ b/src/templates/blog/image_upload.html @@ -0,0 +1,49 @@ + + + + + 上传图片 + + +
+ {% csrf_token %} + {{ form.as_p }} + +
+ + + + diff --git a/src/templates/blog/my_articles.html b/src/templates/blog/my_articles.html new file mode 100644 index 0000000..e2053f1 --- /dev/null +++ b/src/templates/blog/my_articles.html @@ -0,0 +1,66 @@ +{% extends "share_layout/base.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{% trans "My Articles" %}{% endblock %} + +{% block content %} +
+
+
+
+

{% trans "My Articles" %}

+ + {% trans "发布新文章" %} + +
+ + {% if articles %} +
+ + + + + + + + + + + + + {% for article in articles %} + + + + + + + + + {% endfor %} + +
{% trans "标题" %}{% trans "状态" %}{% trans "分类" %}{% trans "创建时间" %}{% trans "浏览量" %}{% trans "操作" %}
+ {{ article.title }} + + {% if article.status == 'p' %} + {% trans "已发布" %} + {% else %} + {% trans "草稿" %} + {% endif %} + {{ article.category.name }}{{ article.creation_time|date:"Y-m-d H:i" }}{{ article.views }} + + {% trans "编辑" %} + +
+
+ {% else %} +
+ {% trans "您还没有创建任何文章。" %} + {% trans "创建您的第一篇文章" %} +
+ {% endif %} +
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/templates/blog/tags/article_meta_info.html b/src/templates/blog/tags/article_meta_info.html index ec8a0f9..6a0c12f 100644 --- a/src/templates/blog/tags/article_meta_info.html +++ b/src/templates/blog/tags/article_meta_info.html @@ -50,6 +50,8 @@ {% if user.is_superuser %} {% trans 'edit' %} + {% elif user.is_authenticated and user == article.author %} + {% trans 'edit' %} {% endif %} diff --git a/src/templates/blog/tags/sidebar.html b/src/templates/blog/tags/sidebar.html index ecb6d20..aa10fd5 100644 --- a/src/templates/blog/tags/sidebar.html +++ b/src/templates/blog/tags/sidebar.html @@ -119,6 +119,8 @@
  • {% trans 'management site' %}
  • {% if user.is_authenticated %} +
  • {% trans '发布文章' %}
  • +
  • {% trans '我的文章' %}
  • {% trans 'logout' %}
  • diff --git a/src/templates/share_layout/base.html b/src/templates/share_layout/base.html index bb17933..db679d0 100644 --- a/src/templates/share_layout/base.html +++ b/src/templates/share_layout/base.html @@ -33,7 +33,7 @@ @@ -44,6 +44,8 @@ + + {% compress css %} @@ -54,6 +56,9 @@ + + + {% block compress_css %} {% endblock %} @@ -113,6 +118,9 @@ {% block footer %} {% endblock %} + +{% include 'blog/background_selector.html' %} + {% plugin_body_resources %} diff --git a/src/templates/share_layout/nav.html b/src/templates/share_layout/nav.html index 24d4da6..fe09752 100644 --- a/src/templates/share_layout/nav.html +++ b/src/templates/share_layout/nav.html @@ -25,6 +25,7 @@ {% trans 'Article archive' %} +
\ No newline at end of file