官网文档地址:编写自定义 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小站

最新文章

  1. 学习Linux系列--Python资源收集
  2. 计算DEM上的Profile图
  3. [题解+总结]NOI2015
  4. RDLC报表系列--------行分组报表
  5. SpringMVC视图解析器(转)
  6. css 字体样式
  7. 【Python】输出中文字符串的两种方法
  8. 基于新浪sae使用php生成图片发布图文微博
  9. bcov进行覆盖率统计
  10. 网络流(最大费用最大流) :POJ 3680 Intervals
  11. 控制用户的访问之权限、角色【weber出品必属精品】
  12. Linux下find与grep指令的相关用法
  13. 打开固定文件的pr_debug
  14. MVC编程模型
  15. POJ--1797 Heavy Transportation (最短路)
  16. BZOJ 4562: [Haoi2016]食物链(拓扑排序)
  17. [转] 使用gc &amp;&amp; objgraph 优化python内存
  18. Linux firewalld使用教程+rhce课程实验
  19. 1 、在Linux(centos6.8)系统下的JDK安装与配置
  20. SharePoint中在线编辑文档

热门文章

  1. 用css3实现摩天轮旋转的动画效果
  2. 徒手生撸一个验证框架,API 参数校验不再怕!
  3. vue中的$router 和 $route的区别
  4. Ubuntu16.04安装Vmware Tools
  5. 批处理 bat 查询局域网内在线电脑IP
  6. 关于json语句的相关用法
  7. echarts以地图形式显示中国疫情情况实现点击省份下钻
  8. python3的subprocess的各个方法的区别(二)
  9. 29.2 Iterator 迭代器
  10. logger日志级别