如何用自定义django-admin命令批量创建测试用户(使用faker 模块随机生成)

官方文档:https://docs.djangoproject.com/zh-hans/3.1/howto/custom-management-commands/
1.只需为应用添加一个 management/commands 目录
在这里插入图片描述

2._private.py 模型不会以管理命令的形式提供,closepoll.py 模块只有一个要求——必须定义Command类,继承自 BaseCommand 或其子类。

3.add_arguments()方法为你的命令添加参数,handle(self, *args, **options)方法do something

注:当你使用管理命令时,期望在终端输出内容,你需要 write 至 self.stdoutself.stderr,而不是直接 print 至stdoutstderr。利用这些代理,测试定义命令会更方便。也请注意下,你不需要为消息添加一个新行字符,它会自动添加,除非你指定了 ending 参数:self.stdout.write("Unterminated line", ending='')

apps/users/management/commands/createuser.py:

from django.core.management.base import BaseCommand, CommandError
from users.models import User
from django.contrib.auth.hashers import make_password
from faker import Faker


class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument('num', nargs='+', type=int)

    def handle(self, *args, **options):
        #print(options.get('num'))
        number = options.get('num')[0]   # 注意:此处options.get('num')是一个列表
        if number is None:
            number = 5
        password = make_password('123456')
        faker = Faker(locale="zh_CN")
        for _ in range(int(number)):
            data = {
                'username': faker.name_male(),
                'mobile': faker.phone_number(),
                'password': password,
                'is_superuser': True,
            }
            try:
                User.objects.create(
                    **data
                )
                User.save()
            except:
                CommandError('创建失败!')
            self.stdout.write(self.style.SUCCESS('Successfully create user "%s"' % faker.name_male()))

效果:

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值