You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.4 KiB
62 lines
2.4 KiB
from django.contrib.auth import get_user_model # Django 提供的获取用户模型的方法
|
|
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):
|
|
help = '创建测试数据' # 用于生成一些假数据,便于前端展示和功能测试
|
|
|
|
def handle(self, *args, **options):
|
|
# 创建或获取一个测试用户
|
|
user = get_user_model().objects.get_or_create(
|
|
email='test@test.com',
|
|
username='测试用户',
|
|
password=make_password('test!q@w#eTYU') # 对明文密码进行哈希加密
|
|
)[0]
|
|
|
|
# 创建或获取一个父级分类
|
|
pcategory = Category.objects.get_or_create(
|
|
name='我是父类目',
|
|
parent_category=None # 表示没有父分类,即为顶级分类
|
|
)[0]
|
|
|
|
# 创建或获取一个子分类,其父分类为上面创建的 pcategory
|
|
category = Category.objects.get_or_create(
|
|
name='子类目',
|
|
parent_category=pcategory
|
|
)[0]
|
|
category.save() # 保存分类对象
|
|
|
|
# 创建一个基础标签
|
|
basetag = Tag()
|
|
basetag.name = "标签"
|
|
basetag.save()
|
|
|
|
# 循环创建 1~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]
|
|
|
|
# 为每篇文章创建一个独立标签,如 标签1、标签2 ...
|
|
tag = Tag()
|
|
tag.name = "标签" + str(i)
|
|
tag.save()
|
|
|
|
# 将独立标签和基础标签都添加到文章的标签集合中
|
|
article.tags.add(tag)
|
|
article.tags.add(basetag)
|
|
article.save() # 保存文章与标签的关联关系
|
|
|
|
# 清空缓存,确保新生成的数据能及时被正确索引或展示
|
|
from djangoblog.utils import cache
|
|
cache.clear()
|
|
|
|
# 输出成功提示
|
|
self.stdout.write(self.style.SUCCESS('已创建测试数据 \n')) |