diff --git a/src/accounts/__pycache__/__init__.cpython-311.pyc b/src/accounts/__pycache__/__init__.cpython-311.pyc index fde4d05..e559632 100644 Binary files a/src/accounts/__pycache__/__init__.cpython-311.pyc and b/src/accounts/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/admin.cpython-311.pyc b/src/accounts/__pycache__/admin.cpython-311.pyc index 796783e..4c38d84 100644 Binary files a/src/accounts/__pycache__/admin.cpython-311.pyc and b/src/accounts/__pycache__/admin.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/apps.cpython-311.pyc b/src/accounts/__pycache__/apps.cpython-311.pyc index a59634c..a477dba 100644 Binary files a/src/accounts/__pycache__/apps.cpython-311.pyc and b/src/accounts/__pycache__/apps.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/forms.cpython-311.pyc b/src/accounts/__pycache__/forms.cpython-311.pyc index 22b4e8e..6acaba6 100644 Binary files a/src/accounts/__pycache__/forms.cpython-311.pyc and b/src/accounts/__pycache__/forms.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/models.cpython-311.pyc b/src/accounts/__pycache__/models.cpython-311.pyc index 20b237e..9346070 100644 Binary files a/src/accounts/__pycache__/models.cpython-311.pyc and b/src/accounts/__pycache__/models.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/urls.cpython-311.pyc b/src/accounts/__pycache__/urls.cpython-311.pyc index 66af091..99e52e7 100644 Binary files a/src/accounts/__pycache__/urls.cpython-311.pyc and b/src/accounts/__pycache__/urls.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/user_login_backend.cpython-311.pyc b/src/accounts/__pycache__/user_login_backend.cpython-311.pyc index 798bfd8..60a3fb2 100644 Binary files a/src/accounts/__pycache__/user_login_backend.cpython-311.pyc and b/src/accounts/__pycache__/user_login_backend.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/utils.cpython-311.pyc b/src/accounts/__pycache__/utils.cpython-311.pyc index 9fb3583..ac69269 100644 Binary files a/src/accounts/__pycache__/utils.cpython-311.pyc and b/src/accounts/__pycache__/utils.cpython-311.pyc differ diff --git a/src/accounts/__pycache__/views.cpython-311.pyc b/src/accounts/__pycache__/views.cpython-311.pyc index 92a8bb5..25d7f2f 100644 Binary files a/src/accounts/__pycache__/views.cpython-311.pyc and b/src/accounts/__pycache__/views.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc index 6c26aa5..8f8a7f6 100644 Binary files a/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/accounts/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc b/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc index 8aec6da..569e52a 100644 Binary files a/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc and b/src/accounts/migrations/__pycache__/0002_alter_bloguser_options_remove_bloguser_created_time_and_more.cpython-311.pyc differ diff --git a/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc b/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc index 5e23d42..1619412 100644 Binary files a/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc and b/src/accounts/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc b/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc index cbbaeae..9e34952 100644 Binary files a/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/accounts/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/__pycache__/__init__.cpython-311.pyc b/src/blog/__pycache__/__init__.cpython-311.pyc index 7427588..dd680d9 100644 Binary files a/src/blog/__pycache__/__init__.cpython-311.pyc and b/src/blog/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/__pycache__/admin.cpython-311.pyc b/src/blog/__pycache__/admin.cpython-311.pyc index 118e2b0..673d62b 100644 Binary files a/src/blog/__pycache__/admin.cpython-311.pyc and b/src/blog/__pycache__/admin.cpython-311.pyc differ diff --git a/src/blog/__pycache__/apps.cpython-311.pyc b/src/blog/__pycache__/apps.cpython-311.pyc index 4f47c02..dce2660 100644 Binary files a/src/blog/__pycache__/apps.cpython-311.pyc and b/src/blog/__pycache__/apps.cpython-311.pyc differ diff --git a/src/blog/__pycache__/context_processors.cpython-311.pyc b/src/blog/__pycache__/context_processors.cpython-311.pyc index 520645d..caf22b6 100644 Binary files a/src/blog/__pycache__/context_processors.cpython-311.pyc and b/src/blog/__pycache__/context_processors.cpython-311.pyc differ diff --git a/src/blog/__pycache__/documents.cpython-311.pyc b/src/blog/__pycache__/documents.cpython-311.pyc index 428ead8..a587d32 100644 Binary files a/src/blog/__pycache__/documents.cpython-311.pyc and b/src/blog/__pycache__/documents.cpython-311.pyc differ diff --git a/src/blog/__pycache__/middleware.cpython-311.pyc b/src/blog/__pycache__/middleware.cpython-311.pyc index 07d696b..0079e49 100644 Binary files a/src/blog/__pycache__/middleware.cpython-311.pyc and b/src/blog/__pycache__/middleware.cpython-311.pyc differ diff --git a/src/blog/__pycache__/models.cpython-311.pyc b/src/blog/__pycache__/models.cpython-311.pyc index a707f38..49be2c2 100644 Binary files a/src/blog/__pycache__/models.cpython-311.pyc and b/src/blog/__pycache__/models.cpython-311.pyc differ diff --git a/src/blog/__pycache__/urls.cpython-311.pyc b/src/blog/__pycache__/urls.cpython-311.pyc index fa75302..a9d6a63 100644 Binary files a/src/blog/__pycache__/urls.cpython-311.pyc and b/src/blog/__pycache__/urls.cpython-311.pyc differ diff --git a/src/blog/__pycache__/views.cpython-311.pyc b/src/blog/__pycache__/views.cpython-311.pyc index 53309ba..2a42aa6 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_views.py b/src/blog/article_views.py new file mode 100644 index 0000000..426b4d0 --- /dev/null +++ b/src/blog/article_views.py @@ -0,0 +1,135 @@ +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect, get_object_or_404 +from django.views.generic.edit import CreateView, UpdateView +from django.urls import reverse_lazy +from .models import Article, Category, Tag +from .forms import ArticleForm + + +class ArticleCreateView(LoginRequiredMixin, CreateView): + """创建文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_create.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +class ArticleUpdateView(LoginRequiredMixin, UpdateView): + """更新文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_edit.html' + pk_url_kwarg = 'article_id' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['all_categories'] = Category.objects.all() + context['all_tags'] = Tag.objects.all() + return context + + def get_initial(self): + initial = super().get_initial() + # 设置分类初始值 + if self.object.category: + initial['category'] = self.object.category.name + + # 设置标签初始值 + if self.object.tags.exists(): + tag_names = [tag.name for tag in self.object.tags.all()] + initial['tags'] = ', '.join(tag_names) + + return initial + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以编辑 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def form_valid(self, form): + # 先不保存表单,先处理分类 + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + # 直接设置分类对象,而不是名称 + form.instance.category = category + + # 先保存文章实例,以便可以添加多对多关系 + # 但在保存前,先从表单中移除category字段,避免表单尝试保存它 + category_temp = form.cleaned_data.pop('category') + tags_temp = form.cleaned_data.pop('tags') + + response = super().form_valid(form) + + # 处理标签 + if tags_temp: + tag_names = [tag.strip() for tag in tags_temp.split(',') if tag.strip()] + form.instance.tags.clear() # 清除现有标签 + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + else: + form.instance.tags.clear() # 如果没有标签,清除所有标签 + + return response + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) diff --git a/src/blog/forms.py b/src/blog/forms.py index 715be76..fc20851 100644 --- a/src/blog/forms.py +++ b/src/blog/forms.py @@ -1,7 +1,9 @@ import logging from django import forms +from django.utils.translation import gettext_lazy as _ from haystack.forms import SearchForm +from .models import Article, Category, Tag logger = logging.getLogger(__name__) @@ -17,3 +19,62 @@ class BlogSearchForm(SearchForm): if self.cleaned_data['querydata']: logger.info(self.cleaned_data['querydata']) return datas + + +class ArticleForm(forms.ModelForm): + """文章表单""" + title = forms.CharField(label='标题', max_length=200, required=True) + body = forms.CharField(label='内容', widget=forms.Textarea(attrs={'id': 'id_body_md'}), required=True) + status = forms.ChoiceField( + label='状态', + choices=[('p', '发布'), ('d', '草稿')], + initial='p', + widget=forms.Select, + required=True + ) + comment_status = forms.ChoiceField( + label='评论状态', + choices=[('o', '开启'), ('c', '关闭')], + initial='o', + widget=forms.Select, + required=True + ) + type = forms.ChoiceField( + label='类型', + choices=[('a', '文章'), ('p', '页面')], + initial='a', + widget=forms.Select, + required=True + ) + show_toc = forms.BooleanField(label='显示目录', required=False) + category = forms.CharField( + label='分类', + required=True, + widget=forms.TextInput(attrs={ + 'class': 'form-control', + 'list': 'category-list', + 'placeholder': '选择或输入分类名称' + }) + ) + tags = forms.CharField( + label='标签', + required=False, + widget=forms.TextInput(attrs={ + 'class': 'form-control', + 'list': 'tag-list', + 'placeholder': '选择或输入标签,多个标签用逗号分隔' + }) + ) + + class Meta: + model = Article + fields = ['title', 'body', 'status', 'comment_status', 'type', 'show_toc'] + + def __init__(self, *args, **kwargs): + super(ArticleForm, self).__init__(*args, **kwargs) + self.fields['title'].widget.attrs.update({'class': 'form-control'}) + self.fields['body'].widget.attrs.update({'class': 'form-control mdeditor', 'rows': 20}) + self.fields['status'].widget.attrs.update({'class': 'form-control'}) + self.fields['comment_status'].widget.attrs.update({'class': 'form-control'}) + self.fields['type'].widget.attrs.update({'class': 'form-control'}) + self.fields['show_toc'].widget.attrs.update({'class': 'form-check-input'}) diff --git a/src/blog/forms_image.py b/src/blog/forms_image.py new file mode 100644 index 0000000..2ba585d --- /dev/null +++ b/src/blog/forms_image.py @@ -0,0 +1,15 @@ + +from django import forms +from django.utils.translation import gettext_lazy as _ +from .models import ArticleImage + + +class ImageUploadForm(forms.ModelForm): + """图片上传表单""" + class Meta: + model = ArticleImage + fields = ['image', 'description'] + widgets = { + 'image': forms.FileInput(attrs={'class': 'form-control', 'accept': 'image/*'}), + 'description': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('可选,添加图片描述')}) + } diff --git a/src/blog/image_views.py b/src/blog/image_views.py new file mode 100644 index 0000000..74d44e1 --- /dev/null +++ b/src/blog/image_views.py @@ -0,0 +1,118 @@ + +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.http import JsonResponse +from django.shortcuts import get_object_or_404 +from django.views.generic.edit import CreateView, DeleteView +from django.urls import reverse_lazy +from django.views.decorators.http import require_POST +from django.views.decorators.csrf import csrf_exempt +import json + +from .models import Article, ArticleImage +from .forms_image import ImageUploadForm + + +class ImageUploadView(LoginRequiredMixin, CreateView): + """上传图片视图""" + model = ArticleImage + form_class = ImageUploadForm + template_name = 'blog/image_upload.html' + + def form_valid(self, form): + article_id = self.kwargs.get('article_id') + article = get_object_or_404(Article, id=article_id) + + # 检查用户是否有权限上传图片 + if article.author != self.request.user and not self.request.user.is_superuser: + return JsonResponse({'status': 'error', 'message': '没有权限上传图片'}, status=403) + + form.instance.article = article + self.object = form.save() + + # 返回JSON响应,包含图片URL和ID + return JsonResponse({ + 'status': 'success', + 'image_id': self.object.id, + 'image_url': self.object.image.url, + 'description': self.object.description + }) + + def form_invalid(self, form): + return JsonResponse({'status': 'error', 'errors': form.errors}, status=400) + + +@login_required +@require_POST +@csrf_exempt +def markdown_image_upload(request): + """为Markdown编辑器提供的图片上传接口""" + if request.method == 'POST' and request.FILES.get('image'): + image_file = request.FILES['image'] + + 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() + + # 创建图片对象,关联到默认文章 + temp_image = ArticleImage( + image=image_file, + article=default_article, + description="Markdown编辑器上传" + ) + + # 保存图片 + temp_image.save() + + # 返回Markdown编辑器需要的格式 + return JsonResponse({ + 'success': 1, + 'message': '上传成功', + 'url': temp_image.image.url + }) + except Exception as e: + # 记录错误并返回失败信息 + import logging + logger = logging.getLogger(__name__) + logger.error(f"图片上传失败: {str(e)}") + + return JsonResponse({ + 'success': 0, + 'message': f'上传失败: {str(e)}' + }) + + return JsonResponse({ + 'success': 0, + 'message': '上传失败:未提供图片文件' + }) + + +class ImageDeleteView(LoginRequiredMixin, DeleteView): + """删除图片视图""" + model = ArticleImage + pk_url_kwarg = 'image_id' + + def delete(self, request, *args, **kwargs): + self.object = self.get_object() + + # 检查用户是否有权限删除图片 + if self.object.article.author != request.user and not request.user.is_superuser: + return JsonResponse({'status': 'error', 'message': '没有权限删除图片'}, status=403) + + # 删除图片文件 + self.object.image.delete() + self.object.delete() + + return JsonResponse({'status': 'success', 'message': '图片已删除'}) diff --git a/src/blog/management/__pycache__/__init__.cpython-311.pyc b/src/blog/management/__pycache__/__init__.cpython-311.pyc index da92857..a4d1585 100644 Binary files a/src/blog/management/__pycache__/__init__.cpython-311.pyc and b/src/blog/management/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/management/commands/create_categories.py b/src/blog/management/commands/create_categories.py new file mode 100644 index 0000000..4b7bdb1 --- /dev/null +++ b/src/blog/management/commands/create_categories.py @@ -0,0 +1,41 @@ +from django.core.management.base import BaseCommand +from blog.models import Category + + +class Command(BaseCommand): + help = '创建文章分类' + + def handle(self, *args, **options): + categories = [ + '技术', + '生活', + '旅行', + '美食', + '摄影', + '读书', + '电影', + '音乐', + '编程', + '设计', + '健康', + '教育', + '职场', + '财经', + '历史', + '文化', + '体育', + '游戏', + '科技' + ] + + for name in categories: + category, created = Category.objects.get_or_create( + name=name, + defaults={'parent_category': None} + ) + if created: + self.stdout.write(self.style.SUCCESS(f'创建分类: {name}')) + else: + self.stdout.write(self.style.WARNING(f'分类已存在: {name}')) + + self.stdout.write(self.style.SUCCESS('分类创建完成')) diff --git a/src/blog/management/commands/list_categories.py b/src/blog/management/commands/list_categories.py new file mode 100644 index 0000000..3ce3752 --- /dev/null +++ b/src/blog/management/commands/list_categories.py @@ -0,0 +1,13 @@ +from django.core.management.base import BaseCommand +from blog.models import Category + + +class Command(BaseCommand): + help = '列出所有文章分类' + + def handle(self, *args, **options): + categories = Category.objects.all() + self.stdout.write('当前数据库中的分类:') + for category in categories: + self.stdout.write(f'- {category.name} (ID: {category.id})') + self.stdout.write(f'总计: {categories.count()} 个分类') diff --git a/src/blog/migrations/0007_articleimage.py b/src/blog/migrations/0007_articleimage.py new file mode 100644 index 0000000..f76e126 --- /dev/null +++ b/src/blog/migrations/0007_articleimage.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.14 on 2025-11-20 20:45 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('blog', '0006_alter_blogsettings_options'), + ] + + operations = [ + migrations.CreateModel( + name='ArticleImage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('image', models.ImageField(upload_to='article_images/%Y/%m/%d/', verbose_name='图片')), + ('description', models.CharField(blank=True, max_length=255, verbose_name='图片描述')), + ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), + ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='blog.article')), + ], + options={ + 'verbose_name': '文章图片', + 'verbose_name_plural': '文章图片', + 'ordering': ['-created_time'], + }, + ), + ] diff --git a/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc index a3cf1b7..146b262 100644 Binary files a/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/blog/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc index 36df054..82b28d1 100644 Binary files a/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0002_blogsettings_global_footer_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc b/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc index 0a9fab9..e2bb9d7 100644 Binary files a/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc and b/src/blog/migrations/__pycache__/0003_blogsettings_comment_need_review.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc index 04ad362..872d089 100644 Binary files a/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0004_rename_analyticscode_blogsettings_analytics_code_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc b/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc index a8d8413..6333d15 100644 Binary files a/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc and b/src/blog/migrations/__pycache__/0005_alter_article_options_alter_category_options_and_more.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc b/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc index 72f33bd..e1a5b4d 100644 Binary files a/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc and b/src/blog/migrations/__pycache__/0006_alter_blogsettings_options.cpython-311.pyc differ diff --git a/src/blog/migrations/__pycache__/__init__.cpython-311.pyc b/src/blog/migrations/__pycache__/__init__.cpython-311.pyc index 91dfc28..b2ae81a 100644 Binary files a/src/blog/migrations/__pycache__/__init__.cpython-311.pyc and b/src/blog/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/models.py b/src/blog/models.py index 083788b..4ff3344 100644 --- a/src/blog/models.py +++ b/src/blog/models.py @@ -304,6 +304,22 @@ class SideBar(models.Model): return self.name +class ArticleImage(models.Model): + """文章图片模型""" + article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='images') + image = models.ImageField(_('图片'), upload_to='article_images/%Y/%m/%d/') + description = models.CharField(_('图片描述'), max_length=255, blank=True) + created_time = models.DateTimeField(_('创建时间'), auto_now_add=True) + + class Meta: + verbose_name = _('文章图片') + verbose_name_plural = verbose_name + ordering = ['-created_time'] + + def __str__(self): + return f"{self.article.title} - {self.image.name}" + + class BlogSettings(models.Model): """blog的配置""" site_name = models.CharField( diff --git a/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc b/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc index 3889cef..840bb6f 100644 Binary files a/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/blog/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc b/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc index 0edc96f..f64ce87 100644 Binary files a/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc and b/src/blog/templatetags/__pycache__/blog_tags.cpython-311.pyc differ diff --git a/src/blog/urls.py b/src/blog/urls.py index adf2703..0e8683d 100644 --- a/src/blog/urls.py +++ b/src/blog/urls.py @@ -2,6 +2,8 @@ from django.urls import path from django.views.decorators.cache import cache_page from . import views +from . import article_views +from . import image_views app_name = "blog" urlpatterns = [ @@ -17,6 +19,18 @@ urlpatterns = [ r'article////.html', views.ArticleDetailView.as_view(), name='detailbyid'), + path( + r'article/create/', + article_views.ArticleCreateView.as_view(), + name='article_create'), + path( + r'article/edit//', + article_views.ArticleUpdateView.as_view(), + name='article_edit'), + path( + r'my-articles/', + views.my_articles, + name='my_articles'), path( r'category/.html', views.CategoryDetailView.as_view(), @@ -59,4 +73,17 @@ urlpatterns = [ r'clean', views.clean_cache_view, name='clean'), + # 图片相关路由 + path( + 'article//upload-image/', + image_views.ImageUploadView.as_view(), + name='upload_image'), + path( + 'markdown-image-upload/', + image_views.markdown_image_upload, + name='markdown_image_upload'), + path( + 'image//delete/', + image_views.ImageDeleteView.as_view(), + name='delete_image'), ] diff --git a/src/blog/views.py b/src/blog/views.py index 773bb75..cab73f6 100644 --- a/src/blog/views.py +++ b/src/blog/views.py @@ -378,3 +378,82 @@ def permission_denied_view( def clean_cache_view(request): cache.clear() return HttpResponse('ok') + + +from django.contrib.auth.decorators import login_required +from django.contrib.auth.mixins import LoginRequiredMixin +from django.shortcuts import redirect +from django.views.generic.edit import CreateView, UpdateView +from django.urls import reverse_lazy +from .forms import ArticleForm + + +class ArticleCreateView(LoginRequiredMixin, CreateView): + """创建文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_create.html' + + def form_valid(self, form): + form.instance.author = self.request.user + + # 处理分类 + category_name = form.cleaned_data['category'] + category, created = Category.objects.get_or_create( + name=category_name, + defaults={'parent_category': None} + ) + form.instance.category = category + + # 处理标签 + tags_str = form.cleaned_data['tags'] + if tags_str: + tag_names = [tag.strip() for tag in tags_str.split(',') if tag.strip()] + form.instance.save() # 保存文章实例,以便可以添加多对多关系 + for tag_name in tag_names: + tag, created = Tag.objects.get_or_create(name=tag_name) + form.instance.tags.add(tag) + + return super().form_valid(form) + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +class ArticleUpdateView(LoginRequiredMixin, UpdateView): + """更新文章视图""" + model = Article + form_class = ArticleForm + template_name = 'blog/article_edit.html' + pk_url_kwarg = 'article_id' + + def dispatch(self, request, *args, **kwargs): + obj = self.get_object() + # 只有文章作者或管理员可以编辑 + if obj.author != request.user and not request.user.is_superuser: + return redirect('blog:detailbyid', + article_id=obj.id, + year=obj.creation_time.year, + month=obj.creation_time.month, + day=obj.creation_time.day) + return super().dispatch(request, *args, **kwargs) + + def get_success_url(self): + return reverse_lazy('blog:detailbyid', kwargs={ + 'article_id': self.object.id, + 'year': self.object.creation_time.year, + 'month': self.object.creation_time.month, + 'day': self.object.creation_time.day + }) + + +@login_required +def my_articles(request): + """显示当前用户的文章列表""" + articles = Article.objects.filter(author=request.user) + return render(request, 'blog/my_articles.html', {'articles': articles}) diff --git a/src/comments/__pycache__/__init__.cpython-311.pyc b/src/comments/__pycache__/__init__.cpython-311.pyc index 728d159..bf56a9a 100644 Binary files a/src/comments/__pycache__/__init__.cpython-311.pyc and b/src/comments/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/__pycache__/admin.cpython-311.pyc b/src/comments/__pycache__/admin.cpython-311.pyc index ab8ac24..2f1f1cd 100644 Binary files a/src/comments/__pycache__/admin.cpython-311.pyc and b/src/comments/__pycache__/admin.cpython-311.pyc differ diff --git a/src/comments/__pycache__/apps.cpython-311.pyc b/src/comments/__pycache__/apps.cpython-311.pyc index 643ad39..61372ec 100644 Binary files a/src/comments/__pycache__/apps.cpython-311.pyc and b/src/comments/__pycache__/apps.cpython-311.pyc differ diff --git a/src/comments/__pycache__/forms.cpython-311.pyc b/src/comments/__pycache__/forms.cpython-311.pyc index 76e09d5..683aa6f 100644 Binary files a/src/comments/__pycache__/forms.cpython-311.pyc and b/src/comments/__pycache__/forms.cpython-311.pyc differ diff --git a/src/comments/__pycache__/models.cpython-311.pyc b/src/comments/__pycache__/models.cpython-311.pyc index ae6d064..b0a36eb 100644 Binary files a/src/comments/__pycache__/models.cpython-311.pyc and b/src/comments/__pycache__/models.cpython-311.pyc differ diff --git a/src/comments/__pycache__/urls.cpython-311.pyc b/src/comments/__pycache__/urls.cpython-311.pyc index 1989e5a..680c823 100644 Binary files a/src/comments/__pycache__/urls.cpython-311.pyc and b/src/comments/__pycache__/urls.cpython-311.pyc differ diff --git a/src/comments/__pycache__/utils.cpython-311.pyc b/src/comments/__pycache__/utils.cpython-311.pyc index 368d9e1..302fcba 100644 Binary files a/src/comments/__pycache__/utils.cpython-311.pyc and b/src/comments/__pycache__/utils.cpython-311.pyc differ diff --git a/src/comments/__pycache__/views.cpython-311.pyc b/src/comments/__pycache__/views.cpython-311.pyc index 3b9cd58..41da316 100644 Binary files a/src/comments/__pycache__/views.cpython-311.pyc and b/src/comments/__pycache__/views.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc index 2679ff5..e2eed5a 100644 Binary files a/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/comments/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc b/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc index 7ff0895..f3d16b3 100644 Binary files a/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc and b/src/comments/migrations/__pycache__/0002_alter_comment_is_enable.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc b/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc index 97f76df..66f9ab0 100644 Binary files a/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc and b/src/comments/migrations/__pycache__/0003_alter_comment_options_remove_comment_created_time_and_more.cpython-311.pyc differ diff --git a/src/comments/migrations/__pycache__/__init__.cpython-311.pyc b/src/comments/migrations/__pycache__/__init__.cpython-311.pyc index 4902e16..1bf0fe2 100644 Binary files a/src/comments/migrations/__pycache__/__init__.cpython-311.pyc and b/src/comments/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc b/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc index 3fb7b3c..de4a888 100644 Binary files a/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/comments/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc b/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc index d2f2e94..e44628d 100644 Binary files a/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc and b/src/comments/templatetags/__pycache__/comments_tags.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/__init__.cpython-311.pyc b/src/djangoblog/__pycache__/__init__.cpython-311.pyc index ca737f1..f49053a 100644 Binary files a/src/djangoblog/__pycache__/__init__.cpython-311.pyc and b/src/djangoblog/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/admin_site.cpython-311.pyc b/src/djangoblog/__pycache__/admin_site.cpython-311.pyc index bedc2bd..ca8f271 100644 Binary files a/src/djangoblog/__pycache__/admin_site.cpython-311.pyc and b/src/djangoblog/__pycache__/admin_site.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/apps.cpython-311.pyc b/src/djangoblog/__pycache__/apps.cpython-311.pyc index 04dd331..630bbd8 100644 Binary files a/src/djangoblog/__pycache__/apps.cpython-311.pyc and b/src/djangoblog/__pycache__/apps.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc b/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc index a57555a..583a302 100644 Binary files a/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc and b/src/djangoblog/__pycache__/blog_signals.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc b/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc index a7adca7..1cde566 100644 Binary files a/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc and b/src/djangoblog/__pycache__/elasticsearch_backend.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/feeds.cpython-311.pyc b/src/djangoblog/__pycache__/feeds.cpython-311.pyc index 045476a..5aede73 100644 Binary files a/src/djangoblog/__pycache__/feeds.cpython-311.pyc and b/src/djangoblog/__pycache__/feeds.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc b/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc index 42131af..ba9a9a0 100644 Binary files a/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc and b/src/djangoblog/__pycache__/logentryadmin.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/settings.cpython-311.pyc b/src/djangoblog/__pycache__/settings.cpython-311.pyc index 521fefa..402980c 100644 Binary files a/src/djangoblog/__pycache__/settings.cpython-311.pyc and b/src/djangoblog/__pycache__/settings.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/sitemap.cpython-311.pyc b/src/djangoblog/__pycache__/sitemap.cpython-311.pyc index 527cd15..420f8ac 100644 Binary files a/src/djangoblog/__pycache__/sitemap.cpython-311.pyc and b/src/djangoblog/__pycache__/sitemap.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc b/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc index 3137872..8ce5440 100644 Binary files a/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc and b/src/djangoblog/__pycache__/spider_notify.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/urls.cpython-311.pyc b/src/djangoblog/__pycache__/urls.cpython-311.pyc index 2a9f10a..271b1d8 100644 Binary files a/src/djangoblog/__pycache__/urls.cpython-311.pyc and b/src/djangoblog/__pycache__/urls.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/utils.cpython-311.pyc b/src/djangoblog/__pycache__/utils.cpython-311.pyc index 5da0bed..c6edec4 100644 Binary files a/src/djangoblog/__pycache__/utils.cpython-311.pyc and b/src/djangoblog/__pycache__/utils.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc b/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc index 63db9a9..8f18831 100644 Binary files a/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc and b/src/djangoblog/__pycache__/whoosh_cn_backend.cpython-311.pyc differ diff --git a/src/djangoblog/__pycache__/wsgi.cpython-311.pyc b/src/djangoblog/__pycache__/wsgi.cpython-311.pyc index bed74b9..9857866 100644 Binary files a/src/djangoblog/__pycache__/wsgi.cpython-311.pyc and b/src/djangoblog/__pycache__/wsgi.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc index a71c305..1e6aec5 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/base_plugin.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc index d7df3d0..b472ee4 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/hook_constants.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc index ad65b89..f84ce97 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/hooks.cpython-311.pyc differ diff --git a/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc b/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc index 8a03a33..518218a 100644 Binary files a/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc and b/src/djangoblog/plugin_manage/__pycache__/loader.cpython-311.pyc differ diff --git a/src/locale/zh_Hans/LC_MESSAGES/django.po b/src/locale/zh_Hans/LC_MESSAGES/django.po index 200b7e6..1400c9e 100644 --- a/src/locale/zh_Hans/LC_MESSAGES/django.po +++ b/src/locale/zh_Hans/LC_MESSAGES/django.po @@ -665,3 +665,95 @@ msgstr "快捷登录" #: .\templates\share_layout\nav.html:26 msgid "Article archive" msgstr "文章归档" + +#: .\templates\share_layout\nav.html:29 +msgid "Create Article" +msgstr "创建文章" + +#: .\templates\share_layout\nav.html:33 +msgid "My Articles" +msgstr "我的文章" + +#: .\templates\blog\article_create.html:5 +msgid "Create Article" +msgstr "创建文章" + +#: .\templates\blog\article_edit.html:5 +msgid "Edit Article" +msgstr "编辑文章" + +#: .\templates\blog\my_articles.html:5 +msgid "My Articles" +msgstr "我的文章" + +#: .\templates\share_layout\nav.html:29 +msgid "发布文章" +msgstr "发布文章" + +#: .\templates\share_layout\nav.html:33 +msgid "我的文章" +msgstr "我的文章" + +#: .\templates\blog\article_create.html:97 +msgid "发布" +msgstr "发布" + +#: .\templates\blog\article_create.html:98 +msgid "取消" +msgstr "取消" + +#: .\templates\blog\article_edit.html:97 +msgid "更新" +msgstr "更新" + +#: .\templates\blog\article_edit.html:98 +msgid "取消" +msgstr "取消" + +#: .\templates\blog\my_articles.html:13 +msgid "发布新文章" +msgstr "发布新文章" + +#: .\templates\blog\my_articles.html:22 +msgid "标题" +msgstr "标题" + +#: .\templates\blog\my_articles.html:23 +msgid "状态" +msgstr "状态" + +#: .\templates\blog\my_articles.html:24 +msgid "分类" +msgstr "分类" + +#: .\templates\blog\my_articles.html:25 +msgid "创建时间" +msgstr "创建时间" + +#: .\templates\blog\my_articles.html:26 +msgid "浏览量" +msgstr "浏览量" + +#: .\templates\blog\my_articles.html:27 +msgid "操作" +msgstr "操作" + +#: .\templates\blog\my_articles.html:38 +msgid "已发布" +msgstr "已发布" + +#: .\templates\blog\my_articles.html:40 +msgid "草稿" +msgstr "草稿" + +#: .\templates\blog\my_articles.html:48 +msgid "编辑" +msgstr "编辑" + +#: .\templates\blog\my_articles.html:58 +msgid "您还没有创建任何文章。" +msgstr "您还没有创建任何文章。" + +#: .\templates\blog\my_articles.html:59 +msgid "创建您的第一篇文章" +msgstr "创建您的第一篇文章" diff --git a/src/logs/djangoblog.log b/src/logs/djangoblog.log index 493da88..8461564 100644 --- a/src/logs/djangoblog.log +++ b/src/logs/djangoblog.log @@ -1,939 +1,821 @@ -[2025-10-14 20:36:01,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:01,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:01,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:01,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:01,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:01,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:01,520] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:01,520] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:01,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:01,523] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:01,525] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:01,527] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:01,528] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:01,528] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:01,529] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:01,529] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:02,586] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:02,586] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-14 20:36:02,587] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:02,587] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:02,588] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:02,590] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:02,591] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:02,593] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:02,594] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:02,596] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-14 20:36:02,607] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader -[2025-10-14 20:36:12,997] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:36:13,031] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:36:13,184] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:36:13,184] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:36:13,667] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:36:13,828] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:37:37,355] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:37:43,208] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:37:58,772] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:38:57,032] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:38:57,032] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:38:57,310] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:38:57,345] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:38:57,345] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:00,721] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:39:00,721] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/c.html"]} -[2025-10-14 20:39:00,977] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:01,013] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:01,013] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:04,783] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/java.html"]} -[2025-10-14 20:39:04,783] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/java.html"]} -[2025-10-14 20:39:05,045] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:05,086] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:05,086] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:07,299] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/python.html"]} -[2025-10-14 20:39:07,299] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/python.html"]} -[2025-10-14 20:39:07,544] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:07,577] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:07,577] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:14,925] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-fen-xiang.html"]} -[2025-10-14 20:39:14,925] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-fen-xiang.html"]} -[2025-10-14 20:39:15,174] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:15,208] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:15,208] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:22,570] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-qiu-zhu.html"]} -[2025-10-14 20:39:22,570] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/tag/ji-zhu-qiu-zhu.html"]} -[2025-10-14 20:39:22,855] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:39:22,894] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:39:22,894] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:40:35,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:40:35,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:40:36,018] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:40:36,051] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:40:36,051] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:42:18,929] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:42:18,929] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:42:19,272] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:42:19,305] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:42:19,305] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:00,493] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:43:00,493] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:43:00,821] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:43:00,862] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:00,862] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:32,291] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:43:32,291] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/14/1.html"]} -[2025-10-14 20:43:32,592] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:43:32,626] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:32,626] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:43:37,686] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:43:38,551] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:43:38,779] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:44:13,528] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 20:44:18,070] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:44:18,070] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:44:18,071] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,071] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,072] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,072] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:18,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:18,158] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,158] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:18,159] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,308] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,308] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,309] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,310] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,310] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:44:25,492] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:44:25,492] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:44:25,494] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:44:25,494] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,495] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,496] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:25,705] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:44:25,707] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:44:25,740] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:44:25,740] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:44:26,025] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:44:26,259] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:44:39,270] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 20:44:39,386] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:39,762] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:39,803] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:44:40,092] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 20:44:49,669] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:49,669] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:44:49,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:49,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:49,671] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:44:49,835] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 20:44:49,922] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test@test.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 20:44:49,922] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test@test.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 20:44:49,967] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:49,987] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:44:50,452] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:44:50,517] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 20:44:50,666] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:44:50,803] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 20:45:40,205] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:45:40,205] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:45:40,206] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:45:40,206] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:45:40,208] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:45:40,208] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:45:40,209] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:45:40,209] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:45:40,211] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:45:40,211] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:45:40,212] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:45:40,483] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:45:40,526] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:45:40,526] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:32,528] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:32,528] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:32,859] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:47:32,897] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:32,897] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:42,168] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:42,168] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:47:42,519] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:47:42,552] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:47:42,552] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:48:28,419] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:48:28,419] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:48:28,759] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:48:28,865] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:48:28,865] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:49:18,735] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:49:19,036] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:49:19,296] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:49:23,302] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:49:23,302] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,303] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,304] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,306] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:23,306] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,389] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,391] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:23,392] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:23,392] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:30,946] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:30,946] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:30,947] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:30,948] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:30,949] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:49:31,411] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:49:31,411] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:49:31,412] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:49:31,412] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:31,422] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:49:31,423] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:31,423] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:31,425] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:49:31,663] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:49:31,664] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:49:31,697] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:49:31,697] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:49:32,003] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:49:32,239] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:49:45,839] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 20:49:45,956] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:49:46,334] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 20:49:46,417] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 20:49:46,439] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:49:46,571] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 20:50:01,693] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 -[2025-10-14 20:50:01,850] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:50:01,992] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl -[2025-10-14 20:50:03,227] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Python_1 -[2025-10-14 20:50:05,550] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_C_1 -[2025-10-14 20:50:06,429] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:archives -[2025-10-14 20:50:08,712] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 20:50:39,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:50:39,655] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:50:39,656] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:50:39,656] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:50:39,656] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:50:39,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:50:39,885] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:50:39,919] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:50:39,919] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:09,293] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:09,293] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:09,603] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:51:09,713] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:09,713] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:43,081] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:43,081] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:51:43,421] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:51:43,457] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:51:43,457] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:10,181] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:52:10,497] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:52:10,766] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:52:14,279] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:14,279] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,281] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,282] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,282] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:14,283] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:14,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:14,381] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,381] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,382] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:14,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:14,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,293] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,293] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,294] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,294] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,295] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,296] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:52:21,964] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:52:21,964] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:52:21,965] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:52:21,965] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,965] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:21,966] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:21,966] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:22,169] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:52:22,170] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:52:22,203] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:22,203] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:22,562] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:52:22,819] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:52:47,474] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:52:47,474] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:52:47,476] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:47,476] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:52:47,476] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:47,476] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:47,477] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:52:47,478] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:47,478] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:52:47,772] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:52:47,810] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:52:47,810] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:53:23,185] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:53:23,185] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:53:23,549] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:53:23,587] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:53:23,587] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:53:58,012] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:53:58,300] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:53:58,541] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:54:04,534] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:04,534] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:04,535] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,535] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,537] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,537] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:04,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:04,635] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,635] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,636] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:04,637] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,538] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,538] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,541] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,541] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,542] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 20:54:11,992] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:54:11,992] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 20:54:11,997] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:54:11,997] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,997] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,998] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:11,999] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:11,999] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:12,207] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:54:12,211] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:54:12,330] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:54:12,330] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:54:12,640] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:54:12,872] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 20:54:46,370] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:54:46,370] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 20:54:46,372] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:46,372] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 20:54:46,372] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:46,372] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 20:54:46,373] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:46,373] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 20:54:46,374] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:46,374] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 20:54:46,375] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:46,375] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 20:54:46,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:46,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 20:54:46,657] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 20:54:46,694] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:54:46,694] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 20:55:22,218] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 20:55:22,516] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 20:55:22,776] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:00:59,799] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:01:04,366] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:01:04,366] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,367] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:04,368] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,455] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:04,456] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,456] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:04,457] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,457] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:04,459] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:04,459] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,204] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,204] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,205] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,206] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,207] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:01:20,674] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:01:20,674] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:01:20,676] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:20,676] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:20,676] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,676] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:20,885] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:01:20,886] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:01:20,921] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:01:20,921] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:01:21,242] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:01:21,272] WARNING [django.security.csrf.log_response:241 log] Forbidden (CSRF token from POST incorrect.): /login/ -[2025-10-14 21:01:21,497] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:01:31,631] WARNING [django.security.csrf.log_response:241 log] Forbidden (CSRF token from POST incorrect.): /login/ -[2025-10-14 21:01:37,036] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:01:40,679] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:40,679] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,680] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:40,681] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:40,773] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,773] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:01:40,774] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,774] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:01:40,775] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,775] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:01:40,776] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,776] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:01:40,777] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:40,777] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:01:43,125] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:01:43,491] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:01:43,636] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:02:00,786] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:00,786] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:00,790] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:00,791] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:00,791] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:00,794] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:02:01,271] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:02:01,271] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:02:01,273] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:02:01,273] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:02:01,274] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:01,274] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:02:01,275] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:01,275] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:02:01,276] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:01,276] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:01,277] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:02:01,498] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:02:01,499] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:02:01,589] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:02:01,589] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:02:01,927] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:02:02,199] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:02:33,526] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 21:02:33,665] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:02:34,078] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:02:34,164] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 21:02:34,184] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:02:34,323] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-14 21:02:36,040] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:author_admin_1 -[2025-10-14 21:02:36,350] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:02:36,495] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl -[2025-10-14 21:02:55,147] INFO [blog.models.comment_list:146 models] get article comments:1 -[2025-10-14 21:02:55,262] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:02:55,650] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:03:06,539] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:03:06,539] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:03:06,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,539] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:03:06,540] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:03:06,623] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,623] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:03:06,624] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,624] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:03:06,625] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,625] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:03:06,626] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:04:24,608] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:04:24,608] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:04:24,776] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test1@test1.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 21:04:24,776] ERROR [djangoblog.blog_signals.send_email_signal_handler:49 blog_signals] 失败邮箱号: ['test1@test1.com'], (500, b'Error: bad syntax', 'None') -[2025-10-14 21:04:24,939] INFO [accounts.views.account_result:150 views] register -[2025-10-14 21:04:24,945] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:04:24,978] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:04:24,978] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:06:30,066] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,066] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,068] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,068] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,069] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,070] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:06:30,529] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 21:06:30,529] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-14 21:06:30,531] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:06:30,531] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:06:30,531] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,531] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:06:30,533] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,533] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,534] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:06:30,748] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:06:30,754] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:06:30,791] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:06:30,791] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:06:31,125] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:06:31,391] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:10:00,425] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:10:00,425] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test1.html"]} -[2025-10-14 21:10:00,746] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:10:00,780] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:00,780] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:13,725] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:10:14,017] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:10:14,279] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:10:17,053] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:10:17,053] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-14 21:10:17,056] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,056] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,057] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,057] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,058] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,058] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,059] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,059] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,061] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:17,061] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:17,148] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,148] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:17,149] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,149] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,150] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:17,151] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:17,151] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,705] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,705] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,706] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,707] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,707] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,707] INFO [accounts.views.form_valid:123 views] next -[2025-10-14 21:10:50,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:10:50,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} -[2025-10-14 21:10:50,894] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:10:50,894] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,895] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:50,896] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-14 21:10:51,103] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-14 21:10:51,104] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-14 21:10:51,141] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:51,141] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-14 21:10:51,498] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:10:51,790] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-14 21:13:21,061] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 -[2025-10-14 21:14:06,379] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-14 21:14:06,507] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:14:06,921] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-14 21:14:07,017] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-14 21:14:07,044] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-14 21:14:07,190] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-15 19:06:42,893] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:42,893] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:42,894] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:42,894] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:42,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:42,896] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:42,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:42,897] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:42,898] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:42,900] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:42,903] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:42,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:42,904] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:42,905] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:42,905] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:42,907] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:51,100] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:51,101] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:51,101] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:51,103] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:51,103] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:51,104] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:51,105] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:51,105] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:51,106] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:51,106] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:51,108] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:51,109] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:51,111] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:52,148] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:52,148] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 19:06:52,149] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:52,149] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 19:06:52,150] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:52,150] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 19:06:52,151] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:52,151] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:52,153] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 19:06:52,155] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:52,155] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 19:06:52,156] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:52,156] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 19:06:52,157] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:52,157] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 19:06:52,158] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:52,158] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:52,160] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:52,162] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 19:06:52,179] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader -[2025-10-15 19:07:03,571] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 19:07:03,600] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 19:07:04,004] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 19:07:04,004] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 19:07:07,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 19:07:10,022] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 19:07:25,823] INFO [blog.models.comment_list:151 models] set article comments:1 -[2025-10-15 19:07:26,719] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-15 19:07:30,321] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 0, 有效推荐数量: 0 -[2025-10-15 19:07:31,108] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com -[2025-10-15 19:07:31,567] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 19:07:32,878] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:20,626] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:20,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:20,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:20,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:20,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:20,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:20,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:20,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:20,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:20,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:20,637] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:20,637] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:20,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:20,639] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:20,640] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:20,640] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:20,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:20,641] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:20,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:20,643] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:20,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:20,644] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:21,775] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 -[2025-10-15 20:19:21,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:21,777] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. -[2025-10-15 20:19:21,778] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:21,778] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 -[2025-10-15 20:19:21,779] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:21,779] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. -[2025-10-15 20:19:21,780] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:21,780] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:21,781] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:21,783] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:21,784] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 -[2025-10-15 20:19:21,785] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:21,785] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. -[2025-10-15 20:19:21,786] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:21,786] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 -[2025-10-15 20:19:21,800] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader -[2025-10-15 20:20:24,225] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 20:20:24,279] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 20:20:24,359] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:24,359] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:26,465] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:20:27,034] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 20:20:41,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:41,073] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:41,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:41,074] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:41,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:41,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:41,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:41,076] INFO [accounts.views.form_valid:123 views] next -[2025-10-15 20:20:42,074] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-15 20:20:42,074] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} -[2025-10-15 20:20:42,075] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-15 20:20:42,075] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:42,075] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:42,077] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara -[2025-10-15 20:20:42,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:42,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars -[2025-10-15 20:20:42,514] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 20:20:42,516] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 20:20:42,575] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:42,575] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:20:43,118] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:20:43,638] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 20:23:08,795] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} -[2025-10-15 20:23:08,795] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} -[2025-10-15 20:23:09,719] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. -[2025-10-15 20:23:09,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:23:09,870] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting -[2025-10-15 20:23:16,292] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 -[2025-10-15 20:23:17,191] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:23:17,887] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari -[2025-10-15 20:23:23,601] INFO [blog.models.comment_list:151 models] set article comments:2 -[2025-10-15 20:23:23,776] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 1, 有效推荐数量: 1 -[2025-10-15 20:23:23,776] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 -[2025-10-15 20:23:24,628] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 1, 有效推荐数量: 1 -[2025-10-15 20:23:24,628] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 -[2025-10-15 20:23:24,753] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar -[2025-10-15 20:23:24,964] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 20:26:53,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:26:53,871] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:26:53,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:26:53,872] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:26:53,874] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:26:53,876] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:26:53,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:26:53,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:26:53,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:26:53,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:26:53,881] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:26:53,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:26:53,886] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:26:53,886] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:26:53,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:26:53,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:08,086] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:08,086] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:08,087] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:08,087] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:08,088] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:08,089] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:08,090] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:08,090] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:08,091] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:08,091] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:08,092] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:08,093] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:08,094] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:09,050] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:27:09,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:09,051] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:27:09,052] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:09,052] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:09,053] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:09,054] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:09,055] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:09,057] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:09,058] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:27:09,072] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:27:32,502] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:27:32,579] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:27:32,618] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:27:32,618] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:27:33,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:27:34,312] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:27:37,984] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_不知道_1 +[2025-11-20 20:27:38,238] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:27:38,393] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-20 20:29:12,662] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:12,662] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:12,665] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:12,665] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:12,666] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:12,666] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:12,668] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:12,668] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:12,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:12,670] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:12,672] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:29:13,070] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:29:13,070] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:29:13,074] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:29:13,074] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:29:13,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:13,076] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:29:13,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:13,078] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:29:13,079] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:13,079] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:29:13,080] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:13,080] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:29:13,081] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:13,081] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:29:13,369] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:29:13,372] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:29:13,415] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:29:13,415] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:29:14,372] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:29:14,691] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:30:21,554] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:tag_不知道_1 +[2025-11-20 20:30:21,855] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:30:22,027] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarl +[2025-11-20 20:30:26,108] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:category_list_Java_1 +[2025-11-20 20:31:33,241] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:31:33,241] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:31:33,242] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,242] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,243] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:33,244] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:33,378] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,378] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,379] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:33,380] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,134] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,134] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,135] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,135] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:31:40,545] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:31:40,545] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:31:40,546] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:31:40,546] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,547] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,548] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:31:40,549] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,549] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:31:40,964] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:31:40,966] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:31:41,293] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:31:41,293] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:31:42,514] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:31:42,839] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:36:28,679] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:28,679] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:28,681] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:28,682] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:28,682] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:28,683] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:28,684] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:28,685] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:28,686] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:28,686] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:28,687] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:28,687] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:28,690] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:29,367] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:36:29,368] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:29,368] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:29,369] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:36:29,370] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:29,370] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:29,371] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:29,372] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:36:29,373] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:29,373] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:36:29,374] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:29,374] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:29,375] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:36:29,389] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:36:32,674] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:36:32,677] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:36:32,715] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:36:32,715] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:36:33,557] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:36:33,950] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:37:06,588] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:37:06,588] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:37:06,589] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,589] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,590] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,590] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,591] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,592] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:06,592] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:06,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,677] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,678] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:06,679] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:06,679] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:16,657] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:16,658] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:16,658] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:37:17,094] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:37:17,094] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 20:37:17,095] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:37:17,095] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:37:17,095] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:17,095] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:17,096] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:37:17,098] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:17,098] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:37:17,349] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:37:17,350] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:37:17,404] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:37:17,404] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:37:18,343] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:37:18,662] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:44:50,016] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:44:50,018] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:44:50,019] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:44:50,020] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:44:50,021] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:44:50,022] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:44:50,023] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:12,809] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:12,810] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:12,811] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:12,811] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:12,812] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:12,812] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:12,813] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:12,814] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:12,815] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:12,816] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:30,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:30,626] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:45:30,627] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:30,627] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:30,628] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:30,629] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:30,630] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:30,631] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:45:30,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:30,632] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:45:30,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:30,633] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:45:30,634] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:30,634] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:45:30,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:45:30,635] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:06,729] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:06,730] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:06,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:06,731] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:06,732] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:06,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:06,733] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:06,734] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:06,735] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:06,736] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:07,409] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:46:07,410] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:07,410] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:46:07,411] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:07,411] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:07,412] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:46:07,413] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:07,413] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:07,414] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:46:07,415] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:07,415] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:07,416] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:46:07,417] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:07,417] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:46:07,429] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:46:11,534] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:46:11,538] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:46:11,616] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:46:11,616] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:46:12,493] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:46:12,774] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:20,513] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:20,514] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:20,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:20,515] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:20,516] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:20,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:20,517] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:20,518] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:20,519] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:20,520] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:20,520] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:20,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:20,521] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:21,201] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:21,202] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:21,203] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:21,204] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:50:21,205] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:21,205] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:21,206] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:50:21,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:21,209] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:21,210] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:50:21,224] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:50:24,080] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:50:24,084] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:50:24,383] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:50:24,383] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:50:25,984] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:50:26,572] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:50:38,579] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:03,877] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:03,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:03,878] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:03,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:03,879] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:03,880] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:03,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:03,881] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:03,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:03,882] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:03,884] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:03,885] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:03,887] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章结尾版权声明 initialized. +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:04,548] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_copyright - 文章结尾版权声明 +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 阅读时间预测 initialized. +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:04,549] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: reading_time - 阅读时间预测 +[2025-11-20 20:58:04,550] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:04,550] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 外部链接处理器 initialized. +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: external_links - 外部链接处理器 +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章浏览次数统计 initialized. +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:04,551] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: view_count - 文章浏览次数统计 +[2025-11-20 20:58:04,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:04,552] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] SEO 优化器 initialized. +[2025-11-20 20:58:04,553] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:04,553] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: seo_optimizer - SEO 优化器 +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 图片性能优化插件 initialized. +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:04,554] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: image_lazy_loading - 图片性能优化插件 +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.base_plugin.init_plugin:48 base_plugin] 文章推荐 initialized. +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:04,555] INFO [djangoblog.plugin_manage.loader.load_plugins:29 loader] Successfully loaded plugin: article_recommendation - 文章推荐 +[2025-11-20 20:58:04,567] INFO [django.utils.autoreload.run_with_reloader:668 autoreload] Watching for file changes with StatReloader +[2025-11-20 20:58:07,536] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:58:07,540] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:58:07,576] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:07,576] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:08,449] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:58:08,716] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:58:29,662] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:58:29,662] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:58:29,976] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:58:30,011] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:30,011] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:58:30,164] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:30,164] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:30,165] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:30,165] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:30,165] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:30,201] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:58:30,677] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:30,677] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:30,677] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:30,678] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:30,678] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:30,893] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:58:31,317] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 20:58:38,918] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:58:39,034] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:39,034] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:39,035] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:39,035] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:39,035] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:39,461] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:39,461] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:58:39,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:39,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:39,462] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:42,570] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:58:44,020] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:58:44,179] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:58:48,940] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 20:58:49,042] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:49,045] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:49,441] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:58:49,442] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:58:49,442] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 20:58:49,442] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:58:49,443] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:58:49,639] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 20:59:00,115] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:59:00,256] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:00,256] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:00,257] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:00,258] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:00,258] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:00,666] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:00,666] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:00,666] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:00,667] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:00,667] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:23,458] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:59:23,458] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/11/20/5.html"]} +[2025-11-20 20:59:23,792] INFO [blog.models.comment_list:151 models] set article comments:5 +[2025-11-20 20:59:23,831] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:23,831] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:23,958] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:23,959] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:23,959] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:23,959] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:23,960] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:23,981] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:59:24,429] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 20:59:24,430] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 20:59:24,431] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 20:59:24,431] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 20:59:24,432] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 20:59:24,549] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:59:24,824] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 20:59:34,294] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:59:35,098] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:59:35,254] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 20:59:42,040] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:59:42,040] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,041] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:42,042] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:42,141] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,141] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,142] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:42,143] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:42,143] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,383] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,384] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,384] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 20:59:49,866] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:59:49,866] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/admin.html"]} +[2025-11-20 20:59:49,867] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:59:49,867] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 20:59:49,868] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,868] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,869] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 20:59:49,870] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:49,870] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 20:59:50,078] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 20:59:50,079] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 20:59:50,122] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:50,122] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 20:59:50,925] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 20:59:51,204] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:00:50,033] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:00:50,033] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:00:50,431] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 21:00:50,470] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:00:50,470] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:01:06,787] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 21:01:07,628] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:01:07,911] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:02:26,248] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:02:26,248] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/article/2025/10/15/2.html"]} +[2025-11-20 21:02:26,695] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 21:02:26,839] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:02:26,839] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:02:26,945] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:02:26,945] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:02:26,946] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:02:26,946] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:02:26,947] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:02:26,968] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 21:02:27,376] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:02:27,376] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:02:27,377] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:02:27,377] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:02:27,377] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:02:27,552] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 21:02:27,651] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:02:27,941] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 21:02:57,873] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 21:02:58,702] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:02:58,860] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:03:02,932] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 21:03:02,932] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] admin@admin123.com +[2025-11-20 21:03:02,933] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:02,933] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:02,934] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:02,935] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:02,935] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:03,028] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:03,028] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:03,029] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:03,030] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:03,030] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:03,031] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:03,031] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,259] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,259] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,260] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,261] INFO [accounts.views.form_valid:123 views] next +[2025-11-20 21:03:10,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 21:03:10,891] INFO [djangoblog.spider_notify.baidu_notify:15 spider_notify] {"remain":10,"success":0,"not_same_site":["https://example.com/author/test.html"]} +[2025-11-20 21:03:10,892] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 21:03:10,892] INFO [djangoblog.blog_signals.user_auth_callback:120 blog_signals] test@test.com +[2025-11-20 21:03:10,892] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,892] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebari +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarl +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,893] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebarp +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebara +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:10,894] INFO [djangoblog.utils.delete_sidebar_cache:208 utils] delete sidebar key:sidebars +[2025-11-20 21:03:11,272] INFO [blog.views.get_queryset_from_cache:75 views] set view cache.key:index_1 +[2025-11-20 21:03:11,273] INFO [blog.context_processors.seo_processor:17 context_processors] set processor cache. +[2025-11-20 21:03:11,458] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:03:11,458] INFO [djangoblog.utils.get_blog_setting:171 utils] set cache get_blog_setting +[2025-11-20 21:03:12,674] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:03:12,988] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebari +[2025-11-20 21:03:18,179] INFO [blog.models.comment_list:151 models] set article comments:2 +[2025-11-20 21:03:18,293] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:03:18,294] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:03:18,294] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:03:18,294] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:03:18,295] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:03:18,686] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:03:18,687] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:03:18,687] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:03:18,688] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:03:18,689] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:03:18,881] INFO [blog.templatetags.blog_tags.gravatar_url:396 blog_tags] Using default avatar for test@test.com +[2025-11-20 21:03:18,989] INFO [blog.templatetags.blog_tags.load_sidebar:213 blog_tags] load sidebar +[2025-11-20 21:03:19,157] INFO [blog.templatetags.blog_tags.load_sidebar:257 blog_tags] set sidebar cache.key:sidebarp +[2025-11-20 21:07:59,835] INFO [blog.views.get_queryset_from_cache:70 views] get view cache.key:index_1 +[2025-11-20 21:08:05,251] INFO [blog.models.comment_list:146 models] get article comments:2 +[2025-11-20 21:08:05,362] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:05,362] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:05,363] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:05,363] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:08:05,363] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:08:05,757] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:05,758] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:05,758] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:05,759] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:08:05,759] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=4, 标题='原批太恶心了', 长度=6 +[2025-11-20 21:08:57,317] INFO [blog.models.comment_list:151 models] set article comments:4 +[2025-11-20 21:08:57,465] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:57,465] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:57,465] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 21:08:57,466] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:57,466] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 +[2025-11-20 21:08:57,963] INFO [plugins.article_recommendation.plugin.get_recommendations:191 plugin] 原始推荐数量: 4, 有效推荐数量: 4 +[2025-11-20 21:08:57,964] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 1: ID=1, 标题='震惊!代码出现重大bug!!!', 长度=15 +[2025-11-20 21:08:57,965] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 2: ID=2, 标题='二次元真恶心', 长度=6 +[2025-11-20 21:08:57,966] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 3: ID=5, 标题='1', 长度=1 +[2025-11-20 21:08:57,967] INFO [plugins.article_recommendation.plugin.get_recommendations:193 plugin] 推荐 4: ID=3, 标题='杂交赛区跪下!!!', 长度=9 diff --git a/src/oauth/__pycache__/__init__.cpython-311.pyc b/src/oauth/__pycache__/__init__.cpython-311.pyc index ea150ab..71c9543 100644 Binary files a/src/oauth/__pycache__/__init__.cpython-311.pyc and b/src/oauth/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/admin.cpython-311.pyc b/src/oauth/__pycache__/admin.cpython-311.pyc index 944b692..29470e5 100644 Binary files a/src/oauth/__pycache__/admin.cpython-311.pyc and b/src/oauth/__pycache__/admin.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/apps.cpython-311.pyc b/src/oauth/__pycache__/apps.cpython-311.pyc index 7544da2..da24d3e 100644 Binary files a/src/oauth/__pycache__/apps.cpython-311.pyc and b/src/oauth/__pycache__/apps.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/forms.cpython-311.pyc b/src/oauth/__pycache__/forms.cpython-311.pyc index 2765c9a..4f52ff4 100644 Binary files a/src/oauth/__pycache__/forms.cpython-311.pyc and b/src/oauth/__pycache__/forms.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/models.cpython-311.pyc b/src/oauth/__pycache__/models.cpython-311.pyc index 14be4c6..2c28eb8 100644 Binary files a/src/oauth/__pycache__/models.cpython-311.pyc and b/src/oauth/__pycache__/models.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/oauthmanager.cpython-311.pyc b/src/oauth/__pycache__/oauthmanager.cpython-311.pyc index e122471..bc58e28 100644 Binary files a/src/oauth/__pycache__/oauthmanager.cpython-311.pyc and b/src/oauth/__pycache__/oauthmanager.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/urls.cpython-311.pyc b/src/oauth/__pycache__/urls.cpython-311.pyc index 93f5f7b..43e6c94 100644 Binary files a/src/oauth/__pycache__/urls.cpython-311.pyc and b/src/oauth/__pycache__/urls.cpython-311.pyc differ diff --git a/src/oauth/__pycache__/views.cpython-311.pyc b/src/oauth/__pycache__/views.cpython-311.pyc index 1503f3c..de55f3a 100644 Binary files a/src/oauth/__pycache__/views.cpython-311.pyc and b/src/oauth/__pycache__/views.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc index 13fca2f..6910b6c 100644 Binary files a/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc b/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc index 114bdd2..f05d706 100644 Binary files a/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0002_alter_oauthconfig_options_alter_oauthuser_options_and_more.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc b/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc index d1b7c08..c9763f0 100644 Binary files a/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc and b/src/oauth/migrations/__pycache__/0003_alter_oauthuser_nickname.cpython-311.pyc differ diff --git a/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc b/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc index 7f5dc49..dfc6228 100644 Binary files a/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc and b/src/oauth/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc b/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc index 6d11ed2..100233a 100644 Binary files a/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc and b/src/oauth/templatetags/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc b/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc index 7f2bb07..2876058 100644 Binary files a/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc and b/src/oauth/templatetags/__pycache__/oauth_tags.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/__init__.cpython-311.pyc b/src/owntracks/__pycache__/__init__.cpython-311.pyc index fe145ca..c716a61 100644 Binary files a/src/owntracks/__pycache__/__init__.cpython-311.pyc and b/src/owntracks/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/admin.cpython-311.pyc b/src/owntracks/__pycache__/admin.cpython-311.pyc index a166500..c959ad8 100644 Binary files a/src/owntracks/__pycache__/admin.cpython-311.pyc and b/src/owntracks/__pycache__/admin.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/apps.cpython-311.pyc b/src/owntracks/__pycache__/apps.cpython-311.pyc index d489fa2..a79f77e 100644 Binary files a/src/owntracks/__pycache__/apps.cpython-311.pyc and b/src/owntracks/__pycache__/apps.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/models.cpython-311.pyc b/src/owntracks/__pycache__/models.cpython-311.pyc index eb4a923..469d0a1 100644 Binary files a/src/owntracks/__pycache__/models.cpython-311.pyc and b/src/owntracks/__pycache__/models.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/urls.cpython-311.pyc b/src/owntracks/__pycache__/urls.cpython-311.pyc index 3e667fe..e98501e 100644 Binary files a/src/owntracks/__pycache__/urls.cpython-311.pyc and b/src/owntracks/__pycache__/urls.cpython-311.pyc differ diff --git a/src/owntracks/__pycache__/views.cpython-311.pyc b/src/owntracks/__pycache__/views.cpython-311.pyc index c1aeb6b..f5f09cf 100644 Binary files a/src/owntracks/__pycache__/views.cpython-311.pyc and b/src/owntracks/__pycache__/views.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc index 57892bb..c9a8adc 100644 Binary files a/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc b/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc index 1fed633..648f0da 100644 Binary files a/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/0002_alter_owntracklog_options_and_more.cpython-311.pyc differ diff --git a/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc b/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc index a01f9cb..48f58ed 100644 Binary files a/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc and b/src/owntracks/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/__pycache__/__init__.cpython-311.pyc b/src/plugins/__pycache__/__init__.cpython-311.pyc index 9c02a78..70fde45 100644 Binary files a/src/plugins/__pycache__/__init__.cpython-311.pyc and b/src/plugins/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc b/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc index 84122cb..a0ed6db 100644 Binary files a/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc and b/src/plugins/article_copyright/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc b/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc index 61a1311..d00d5e4 100644 Binary files a/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc and b/src/plugins/article_copyright/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc b/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc index f9a74fe..1509570 100644 Binary files a/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc and b/src/plugins/article_recommendation/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc b/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc index c6a8c65..d69ec02 100644 Binary files a/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc and b/src/plugins/article_recommendation/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc b/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc index e3769bc..2bcb92a 100644 Binary files a/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc and b/src/plugins/external_links/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc b/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc index 02b4df3..f3b0e85 100644 Binary files a/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc and b/src/plugins/external_links/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc b/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc index d64914b..a006310 100644 Binary files a/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc and b/src/plugins/image_lazy_loading/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc b/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc index 86ecbe0..d866161 100644 Binary files a/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc and b/src/plugins/image_lazy_loading/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc b/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc index 2e1851f..a9a36e3 100644 Binary files a/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc and b/src/plugins/reading_time/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc b/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc index fcbba00..72c39f7 100644 Binary files a/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc and b/src/plugins/reading_time/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc b/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc index 0473a47..46c3305 100644 Binary files a/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc and b/src/plugins/seo_optimizer/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc b/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc index f793500..5ad6c92 100644 Binary files a/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc and b/src/plugins/seo_optimizer/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc b/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc index 287c667..3f40557 100644 Binary files a/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc and b/src/plugins/view_count/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc b/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc index 0a7b862..d914aac 100644 Binary files a/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc and b/src/plugins/view_count/__pycache__/plugin.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc b/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc index a673789..a563534 100644 Binary files a/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc and b/src/servermanager/__pycache__/MemcacheStorage.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/__init__.cpython-311.pyc b/src/servermanager/__pycache__/__init__.cpython-311.pyc index 01321cd..8d687c6 100644 Binary files a/src/servermanager/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/admin.cpython-311.pyc b/src/servermanager/__pycache__/admin.cpython-311.pyc index 2a2c95b..8b3f39b 100644 Binary files a/src/servermanager/__pycache__/admin.cpython-311.pyc and b/src/servermanager/__pycache__/admin.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/apps.cpython-311.pyc b/src/servermanager/__pycache__/apps.cpython-311.pyc index 800626a..0341712 100644 Binary files a/src/servermanager/__pycache__/apps.cpython-311.pyc and b/src/servermanager/__pycache__/apps.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/models.cpython-311.pyc b/src/servermanager/__pycache__/models.cpython-311.pyc index 3d3ace9..29581c7 100644 Binary files a/src/servermanager/__pycache__/models.cpython-311.pyc and b/src/servermanager/__pycache__/models.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/robot.cpython-311.pyc b/src/servermanager/__pycache__/robot.cpython-311.pyc index 74c54e9..bce7796 100644 Binary files a/src/servermanager/__pycache__/robot.cpython-311.pyc and b/src/servermanager/__pycache__/robot.cpython-311.pyc differ diff --git a/src/servermanager/__pycache__/urls.cpython-311.pyc b/src/servermanager/__pycache__/urls.cpython-311.pyc index 52b2842..f6fb85b 100644 Binary files a/src/servermanager/__pycache__/urls.cpython-311.pyc and b/src/servermanager/__pycache__/urls.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/__init__.cpython-311.pyc b/src/servermanager/api/__pycache__/__init__.cpython-311.pyc index 7626632..9c8d179 100644 Binary files a/src/servermanager/api/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/api/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc b/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc index 99e76df..4d61952 100644 Binary files a/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc and b/src/servermanager/api/__pycache__/blogapi.cpython-311.pyc differ diff --git a/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc b/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc index 5129c92..54d0ad5 100644 Binary files a/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc and b/src/servermanager/api/__pycache__/commonapi.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc b/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc index 82cbef5..43518fd 100644 Binary files a/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/0001_initial.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc b/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc index 90d91e4..1a0b017 100644 Binary files a/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/0002_alter_emailsendlog_options_and_more.cpython-311.pyc differ diff --git a/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc b/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc index c9deb10..0e11c14 100644 Binary files a/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc and b/src/servermanager/migrations/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/templates/blog/article_create.html b/src/templates/blog/article_create.html new file mode 100644 index 0000000..ff7ddcc --- /dev/null +++ b/src/templates/blog/article_create.html @@ -0,0 +1,284 @@ +{% extends "share_layout/base.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{% trans "Create Article" %}{% endblock %} + +{% block header %} +{{ block.super }} + + +{% endblock %} + +{% block content %} +
+
+
+

{% trans "Create Article" %}

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

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

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

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

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

{% trans "My Articles" %}

+ + {% trans "发布新文章" %} + +
+ + {% if articles %} +
+ + + + + + + + + + + + + {% for article in articles %} + + + + + + + + + {% endfor %} + +
{% trans "标题" %}{% trans "状态" %}{% trans "分类" %}{% trans "创建时间" %}{% trans "浏览量" %}{% trans "操作" %}
+ {{ article.title }} + + {% if article.status == 'p' %} + {% trans "已发布" %} + {% else %} + {% trans "草稿" %} + {% endif %} + {{ article.category.name }}{{ article.creation_time|date:"Y-m-d H:i" }}{{ article.views }} + + {% trans "编辑" %} + +
+
+ {% else %} +
+ {% trans "您还没有创建任何文章。" %} + {% trans "创建您的第一篇文章" %} +
+ {% endif %} +
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/templates/blog/tags/article_meta_info.html b/src/templates/blog/tags/article_meta_info.html index ec8a0f9..6a0c12f 100644 --- a/src/templates/blog/tags/article_meta_info.html +++ b/src/templates/blog/tags/article_meta_info.html @@ -50,6 +50,8 @@ {% if user.is_superuser %} {% trans 'edit' %} + {% elif user.is_authenticated and user == article.author %} + {% trans 'edit' %} {% endif %} diff --git a/src/templates/blog/tags/sidebar.html b/src/templates/blog/tags/sidebar.html index ecb6d20..aa10fd5 100644 --- a/src/templates/blog/tags/sidebar.html +++ b/src/templates/blog/tags/sidebar.html @@ -119,6 +119,8 @@ \ No newline at end of file