diff --git a/src/blog/__pycache__/models.cpython-311.pyc b/src/blog/__pycache__/models.cpython-311.pyc index 49be2c2..dabba95 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 a9d6a63..92719d4 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 2a42aa6..30fdf11 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 index 426b4d0..a7ceed4 100644 --- a/src/blog/article_views.py +++ b/src/blog/article_views.py @@ -3,7 +3,7 @@ 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 +from .models import Article, Category, Tag, ArticleImage from .forms import ArticleForm 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/image_views.py b/src/blog/image_views.py index 74d44e1..973d941 100644 --- a/src/blog/image_views.py +++ b/src/blog/image_views.py @@ -49,38 +49,47 @@ 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: - # 创建一个默认文章对象(如果需要的话) - # 或者使用一个特殊的标记值来表示这是一个临时图片 - from blog.models import Article - default_article = Article.objects.filter(author=request.user).first() - - if not default_article: - # 如果用户没有任何文章,创建一个临时的草稿文章 - default_article = Article( - title="临时图片存储", - body="", - status="d", # 草稿状态 - author=request.user - ) - default_article.save() - - # 创建图片对象,关联到默认文章 + # 获取会话中的临时图片ID列表 + temp_image_ids = request.session.get('temp_image_ids', []) + + # 创建图片对象,但不立即关联到文章 temp_image = ArticleImage( image=image_file, - article=default_article, - description="Markdown编辑器上传" + 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 + 'url': temp_image.image.url, + 'image_id': temp_image.id # 添加图片ID,以便后续可以删除 }) except Exception as e: # 记录错误并返回失败信息 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/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/models.py b/src/blog/models.py index 4ff3344..d2a02a1 100644 --- a/src/blog/models.py +++ b/src/blog/models.py @@ -306,8 +306,8 @@ class SideBar(models.Model): class ArticleImage(models.Model): """文章图片模型""" - article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='images') - image = models.ImageField(_('图片'), upload_to='article_images/%Y/%m/%d/') + 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) diff --git a/src/blog/urls.py b/src/blog/urls.py index 0e8683d..02d8d4b 100644 --- a/src/blog/urls.py +++ b/src/blog/urls.py @@ -3,6 +3,8 @@ 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" @@ -21,12 +23,16 @@ urlpatterns = [ name='detailbyid'), path( r'article/create/', - article_views.ArticleCreateView.as_view(), + ArticleCreateView.as_view(), name='article_create'), path( r'article/edit//', - article_views.ArticleUpdateView.as_view(), + ArticleUpdateView.as_view(), name='article_edit'), + path( + r'article/delete//', + ArticleDeleteView.as_view(), + name='article_delete'), path( r'my-articles/', views.my_articles, diff --git a/src/blog/views.py b/src/blog/views.py index cab73f6..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 @@ -414,7 +419,27 @@ class ArticleCreateView(LoginRequiredMixin, CreateView): tag, created = Tag.objects.get_or_create(name=tag_name) form.instance.tags.add(tag) - return super().form_valid(form) + # 先保存文章,以便可以关联图片 + 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={ diff --git a/src/djangoblog/__pycache__/settings.cpython-311.pyc b/src/djangoblog/__pycache__/settings.cpython-311.pyc index 402980c..2a64a33 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__/urls.cpython-311.pyc b/src/djangoblog/__pycache__/urls.cpython-311.pyc index 271b1d8..375a6c8 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/settings.py b/src/djangoblog/settings.py index e04ffcb..f74a69f 100644 --- a/src/djangoblog/settings.py +++ b/src/djangoblog/settings.py @@ -355,8 +355,53 @@ STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesSto COMPRESS_URL = STATIC_URL COMPRESS_ROOT = STATIC_ROOT -MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') -MEDIA_URL = '/media/' +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' # 安全头部配置 - 防XSS和其他攻击 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/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/logs/djangoblog.log b/src/logs/djangoblog.log index 8461564..a0731be 100644 --- a/src/logs/djangoblog.log +++ b/src/logs/djangoblog.log @@ -819,3 +819,1267 @@ [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 diff --git a/src/templates/blog/article_create.html b/src/templates/blog/article_create.html index ff7ddcc..171f900 100644 --- a/src/templates/blog/article_create.html +++ b/src/templates/blog/article_create.html @@ -8,6 +8,8 @@ {{ block.super }} + + {% endblock %} {% block content %} @@ -126,6 +128,8 @@ {% block extra_js %} + + +