django manage.py扩展自定义命令

来源:互联网 发布:sql视图是什么 编辑:程序博客网 时间:2024/04/26 07:19

# 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',]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.在myapp下建management.commands模块

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

4.在commands下建initdata.py文件

#!/usr/bin/env python# -*- coding: utf-8 -*-from django.core.management.base import BaseCommand, CommandErrorimport osimport loggingimport subprocessINTERPRETER = "/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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

5.编写data.py

#!/usr/bin/env python# -*- coding: utf-8 -*-if __name__ == '__main__':    print 'ok'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6.执行python manage.py initdata

原创粉丝点击