django manage.py扩展自定义命令

# 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模块

建立后的目录如下:
这里写图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值