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 查找文件名包含指定字符串的方法
Jun 05 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
Django打印出在数据库中执行的语句问题
Jul 25 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
python中pyplot基础图标函数整理
Nov 10 Python
Python Socket多线程并发原理及实现
Dec 11 Python
python+playwright微软自动化工具的使用
Feb 02 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网站备份程序代码分享
2011/06/10 PHP
初品cakephp 入门基础
2012/02/16 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Python实现全排列的打印
2018/08/18 Python
Python列表切片常用操作实例解析
2020/03/10 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
建筑专业毕业生推荐信
2013/11/21 职场文书
策划主管的工作职责
2013/11/24 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
入股合作协议书
2014/10/12 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
幼儿园开学通知
2015/04/24 职场文书
好员工观后感
2015/06/17 职场文书
政审证明范文
2015/06/19 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
如何解决.cuda()加载用时很长的问题
2021/05/24 Python