zoukankan      html  css  js  c++  java
  • Django编写自定义manage.py 命令

    官网文档地址:编写自定义 django-admin 命令

    金句:
    你所浪费的今天,正是昨天死的人所期待的明天。
    

    开篇话:

    python manage.py <command> 的命令我们用了很多,要是我们想要使用一些特定的较长的命令时,比如:python manage.py test --keepdb --settings=appname.test_settings(命令作用:运行项目测试时,使用指定的配置文件),这时每次运行的就很麻烦,可以通过设定自定义manage.py命令来实现。

    操作步骤要点:

    第一步:新建自定义命令模块

    在已有的项目中,在你要设置的项目app下,增加 management/commands目录,新建python模块,模块名不能以“_”开头,否则模块不会被设置为自定义命令。设置的自定义命令为模块的名字,创建好后的目录树如下:

    appname/        # django项目下的某个app
        __init__.py
        models.py
        management/
            commands/
                _private.py # 这模块不会被加入到自定义命令
                newtest.py    # 这个模块会被设置为自定义命令,命令为模块名
        tests.py
        views.py
    
    注意:添加自定义命令的app需要在`settings.py`INSTALLED_APPS中注册。
    

    第二步:编写自定义命令功能

    设置newtest.py要实现的功能,newtest.py的内容:

    import os
    import traceback
    from django.core.management.base import BaseCommand, CommandError
    
    class Command(BaseCommand):
    
        def add_arguments(self, parser):
    
            parser.add_argument(
                dest='appname', # 参数名字
                type=str,   # 参数类型
                help='测试哪个app', # 帮助信息
            )
    
        def handle(self, *args, **options):
            try:
                shell_info ='python manage.py test %s --keepdb  --settings=appname.test_settings' % (options['appname'])
                os.system(shell_info)
                self.stdout.write(self.style.SUCCESS('命令%s执行成功, 参数为%s' % (__file__, options['appname'])))
            except:
                self.stdout.write(traceback.format_exc())
                self.stdout.write(self.style.ERROR('命令执行出错'))
    

    以上功能解释:执行python manage.py newtest appname时,就会调用test测试,并运行指定的测试专用settings.py配置。

    注意: 要打印输出信息,要使用:`self.stdout.write("Unterminated line", ending='')`,`ending=''参数是指定输出信息后以什么结尾,不配置参数默认是换行符。`
    

    如果各位有什么不明白的地方,可以留言回复。

    本文首发于BigYoung小站

  • 相关阅读:
    监听器和过滤器
    jdbc电话本项目
    jdbc数据库中的增删改
    servlet实现登陆注册
    Python 数据分析基础小结
    分类模型构建
    回归模型构建
    sklearn——数据集调用及应用
    数据处理——数据集划分
    数据分析——Matplotlib图形绘制
  • 原文地址:https://www.cnblogs.com/bigyoung/p/12782328.html
Copyright © 2011-2022 走看看