Django编写自定义manage.py 命令
2024-08-31 07:05:30
官网文档地址:编写自定义 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小站
最新文章
- 学习Linux系列--Python资源收集
- 计算DEM上的Profile图
- [题解+总结]NOI2015
- RDLC报表系列--------行分组报表
- SpringMVC视图解析器(转)
- css 字体样式
- 【Python】输出中文字符串的两种方法
- 基于新浪sae使用php生成图片发布图文微博
- bcov进行覆盖率统计
- 网络流(最大费用最大流) :POJ 3680 Intervals
- 控制用户的访问之权限、角色【weber出品必属精品】
- Linux下find与grep指令的相关用法
- 打开固定文件的pr_debug
- MVC编程模型
- POJ--1797 Heavy Transportation (最短路)
- BZOJ 4562: [Haoi2016]食物链(拓扑排序)
- [转] 使用gc &;&; objgraph 优化python内存
- Linux firewalld使用教程+rhce课程实验
- 1 、在Linux(centos6.8)系统下的JDK安装与配置
- SharePoint中在线编辑文档