Django编写自定义manage.py 命令(django使用教程)

网友投稿 445 2022-06-26


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

金句:

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

开篇话:

python manage.py  的命令我们用了很多,要是我们想要使用一些特定的较长的命令时,比如: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=''参数是指定输出信息后以什么结尾,不配置参数默认是换行符。`

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:批量识别图中文字自动命名,让你1秒找到骚图(批量识别图片中的文字)
下一篇:LeetCode 46. 全排列(leetcode是干嘛的)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~