首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Django 2.2文档系列】编写自定义manage.py 命令

【Django 2.2文档系列】编写自定义manage.py 命令

作者头像
BigYoung小站
发布2020-05-06 14:10:40
3130
发布2020-05-06 14:10:40
举报
文章被收录于专栏:BigYoung小站BigYoung小站

官网文档地址:编写自定义 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=''参数是指定输出信息后以什么结尾,不配置参数默认是换行符。`

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BigYoung小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开篇话:
  • 操作步骤要点:
    • 第一步:新建自定义命令模块
      • 第二步:编写自定义命令功能
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档