From 4e8ad15d2f53204db81f3d6fa0ac459d82ff912b Mon Sep 17 00:00:00 2001 From: zxc <3425933825@qq.com> Date: Wed, 22 Oct 2025 15:02:32 +0800 Subject: [PATCH] Update blogapi.py --- .../servermanager/api/blogapi.py | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/DjangoBlog-master/servermanager/api/blogapi.py b/src/DjangoBlog-master/servermanager/api/blogapi.py index 8a4d6ac..a579a68 100644 --- a/src/DjangoBlog-master/servermanager/api/blogapi.py +++ b/src/DjangoBlog-master/servermanager/api/blogapi.py @@ -5,23 +5,51 @@ from blog.models import Article, Category class BlogApi: def __init__(self): + # 初始化Haystack的搜索查询集(SearchQuerySet) self.searchqueryset = SearchQuerySet() + # 执行空关键词自动查询,初始化查询集(无实际筛选,仅构建基础查询对象) self.searchqueryset.auto_query('') + # 定义默认最大返回数量:最多返回8条数据 self.__max_takecount__ = 8 def search_articles(self, query): + """ + 根据关键词搜索文章 + :param query: 搜索关键词 + :return: 匹配的文章查询集(最多8条) + """ + # 基于关键词执行自动查询(Haystack会处理分词、索引匹配等逻辑) sqs = self.searchqueryset.auto_query(query) + # 加载关联的完整模型数据(避免后续访问关联字段时触发额外数据库查询) sqs = sqs.load_all() + # 返回前N条结果(N=__max_takecount__) return sqs[:self.__max_takecount__] def get_category_lists(self): + """ + 获取所有文章分类 + :return: 所有Category模型对象的查询集 + """ + # 查询并返回所有分类(无数量限制,因分类通常数量较少) return Category.objects.all() def get_category_articles(self, categoryname): + """ + 根据分类名称获取该分类下的文章 + :param categoryname: 分类名称 + :return: 该分类下的文章查询集(最多8条),无匹配时返回None + """ + # 筛选分类名称匹配的文章(通过外键category关联查询) articles = Article.objects.filter(category__name=categoryname) + # 若有匹配文章,返回前8条;无匹配则返回None if articles: return articles[:self.__max_takecount__] return None def get_recent_articles(self): - return Article.objects.all()[:self.__max_takecount__] + """ + 获取最新发布的文章 + :return: 最新的文章查询集(最多8条) + """ + # 查询所有文章,默认按主键降序(通常主键自增,等价于按发布时间降序),返回前8条 + return Article.objects.all()[:self.__max_takecount__] \ No newline at end of file