From 470712015add88d3c7fa7a9e2defbccddd15511e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=AC=A3=E6=80=A1?= <3093609022@qq.com> Date: Sun, 9 Nov 2025 22:06:56 +0800 Subject: [PATCH] =?UTF-8?q?yxy=E6=B7=BB=E5=8A=A0=20create=5Ftestdata.py=20?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../management/commands/create_testdata.py | 60 +++++++++++++++---- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/create_testdata.py b/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/create_testdata.py index 675d2ba6..8d472bf6 100644 --- a/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/create_testdata.py +++ b/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/create_testdata.py @@ -1,40 +1,76 @@ +# 导入Django用户模型、密码加密、命令基类 from django.contrib.auth import get_user_model from django.contrib.auth.hashers import make_password from django.core.management.base import BaseCommand +# 导入博客应用的核心模型 from blog.models import Article, Tag, Category class Command(BaseCommand): + """ + Django自定义管理命令:创建测试数据 + 用于快速生成用户、分类、标签和文章等测试数据,方便开发和测试 + """ + # 命令的帮助信息(执行python manage.py help create_testdata时显示) help = 'create test datas' def handle(self, *args, **options): + """ + 命令核心执行逻辑 + 当运行python manage.py create_testdata时调用,生成测试数据 + """ + # 1. 创建或获取测试用户 + # get_or_create:存在则获取,不存在则创建(避免重复生成) + # make_password:加密密码(安全存储) user = get_user_model().objects.get_or_create( - email='test@test.com', username='测试用户', password=make_password('test!q@w#eTYU'))[0] + email='test@test.com', # 测试邮箱 + username='测试用户', # 用户名 + password=make_password('test!q@w#eTYU') # 加密后的密码 + )[0] # [0]取返回元组中的用户对象 + # 2. 创建分类(含层级关系) + # 创建父分类(无上级分类) pcategory = Category.objects.get_or_create( - name='我是父类目', parent_category=None)[0] + name='我是父类目', + parent_category=None # 顶级分类 + )[0] + # 创建子分类(关联父分类) category = Category.objects.get_or_create( - name='子类目', parent_category=pcategory)[0] + name='子类目', + parent_category=pcategory # 关联到父分类 + )[0] + category.save() # 保存子分类 - category.save() + # 3. 创建基础标签(供所有测试文章共用) basetag = Tag() - basetag.name = "标签" + basetag.name = "标签" # 标签名称 basetag.save() + + # 4. 批量创建测试文章(1-19共19篇) for i in range(1, 20): + # 创建或获取文章 article = Article.objects.get_or_create( - category=category, - title='nice title ' + str(i), - body='nice content ' + str(i), - author=user)[0] + category=category, # 关联到子分类 + title=f'nice title {i}', # 文章标题(带序号) + body=f'nice content {i}', # 文章内容(带序号) + author=user # 关联到测试用户 + )[0] + + # 为每篇文章创建专属标签 tag = Tag() - tag.name = "标签" + str(i) + tag.name = f"标签{i}" # 标签名称(带序号) tag.save() + + # 给文章添加标签(专属标签 + 基础标签) article.tags.add(tag) article.tags.add(basetag) - article.save() + article.save() # 保存文章(更新标签关联) + # 5. 清除缓存(确保新生成的测试数据能立即生效) from djangoblog.utils import cache cache.clear() - self.stdout.write(self.style.SUCCESS('created test datas \n')) + + # 输出成功信息到控制台 + self.stdout.write(self.style.SUCCESS('created test datas \n')) \ No newline at end of file