django manage.py扩展自定义命令方法


Posted in Python onMay 27, 2018

# django manage.py扩展自定义命令

环境: 
mac 
django1.10.3

在实际的项目开发过程中,我们可能要执行某脚本初始化数据库,可能要启动多个服务,比如启动celery,redis等。要是直接执行python mange.py celery/redis那该多方便啊!,能把这些命令整合到django框架的manage.py中吗?

示例-初始化数据

通过执行python manage.py initdata命令初始化数据,执行此命令后,调用某数据初始化脚本文件,进行数据初始化。

1.创建项目 myproject

2.创建app myapp,并配置settings.py

settings.py

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'myapp',
]

3.在myapp下建management.commands模块

建立后的目录如下:

django manage.py扩展自定义命令方法

4.在commands下建initdata.py文件

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError
import os
import logging
import subprocess
INTERPRETER = "/usr/bin/python"

class Command(BaseCommand):
 def handle(self, *args, **options):
  if not os.path.exists(INTERPRETER):
   log.error("Cannot find INTERPRETER at path \"%s\"." % INTERPRETER)
  dirs = os.path.join(os.path.dirname(__file__), '../../..') # 上上上级文件目录名
  processor = dirs + "/init/data.py"
  pargs = [INTERPRETER, processor]
  subprocess.Popen(pargs)

5.编写data.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

if __name__ == '__main__':
 print 'ok'

6.执行python manage.py initdata

以上这篇django manage.py扩展自定义命令方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
详解详解Python中writelines()方法的使用
May 25 Python
python妹子图简单爬虫实例
Jul 07 Python
简单讲解Python中的闭包
Aug 11 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
简单介绍python封装的基本知识
Aug 10 Python
python Kmeans算法原理深入解析
Aug 23 Python
python 默认参数相关知识详解
Sep 18 Python
pytorch masked_fill报错的解决
Feb 18 Python
python实现飞船大战
Apr 24 Python
Django框架安装及项目创建过程解析
Sep 14 Python
python实现windows下文件备份脚本
May 27 #Python
django 解决manage.py migrate无效的问题
May 27 #Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 #Python
解决Django migrate No changes detected 不能创建表的问题
May 27 #Python
django 在原有表格添加或删除字段的实例
May 27 #Python
用python写扫雷游戏实例代码分享
May 27 #Python
和孩子一起学习python之变量命名规则
May 27 #Python
You might like
PHP中GET变量的使用
2006/10/09 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
JQuery基础语法小结
2015/02/27 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
python多进程实现文件下载传输功能
2018/07/28 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
Pycharm github配置实现过程图解
2020/10/13 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
小区门卫管理制度
2014/01/29 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
经济国贸专业求职信
2014/06/18 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
入党个人总结范文
2015/03/02 职场文书
对公司的意见和建议
2015/06/04 职场文书
小马王观后感
2015/06/11 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书