转:

django的command命令是要放在一个app的management/commands目录下。python2环境中,请确保management和management/commands目录内都包含__init__.py文件

例如command文件名为closepoll.py,对此模块只有唯一的要求,它必须定义一个command类并扩展自BaseCommand或其子类

from django.core.management.base import BaseCommand,CommandError

from polls.models import Poll

class Command(BaseCommand):

  help='Close the specified poll for voting'

  def  handle(self,*args,**options):

    for poll_id in options["poll_id"]:

      try:

        poll = Poll.objects.get(pk=poll_id)

      except Poll.DoesNotExist:

        raise CommandError('Poll "%s" does not exist'%poll_id)

      poll.opened = False

      poll.save()

      self.stdout.write('Successfully closed poll "%s"' % poll_id)

接受可选参数

可使用add_argument()方法

class Command(BaseCommand):

  def add_argument(self,parser):

    #postional arguments

    parser.add_argument('poll_id',nargs='+',type=int)

    #Named (optional)arguments

    parser.add_argument('--delete',

      action='store_true',

      dest='delete',

      default=False,

      help='Delete poll instead of closing it')

  def handle(self,*args,**options):

    if options['delete']:

      poll.delete()

方法

返回django版本号:BaseCommand.get_version() 
命令的真正逻辑。子类必须实现这个方法。:BaseCommand.handle()

BaseCommand的子类

class LabelCommand

这个管理命令接收命令行上的一个或多个参数(标签),并对它们每一个都做一些动作。

子类不用实现handle(),但必须实现handle_label(),它将会为每个标签调用一次。

LabelCommand.handle_label(label, **options)

对label完成命令行的动作,label是命令行给出的字符串。

怎么运行写好的command文件,给django-command写option选项

python manage.py 文件名.py [app名字]

转:http://www.codeweblog.com/%E7%BB%99django-command%E5%86%99option%E9%80%89%E9%A1%B9/

原文:https://docs.djangoproject.com/en/1.8/howto/custom-management-commands/

 
 

最新文章

  1. Spring拦截机制之后端国际化心得
  2. Nginx笔记
  3. mysql数据表操作&库操作
  4. 黑马程序员_Java基础:序列化(Serializable)与反序列化
  5. Apache Nutch v2.3 发布,Java实现的网络爬虫
  6. js实现上下滑动侧边栏
  7. 将复杂form表单序列化serialize-object.js
  8. vuejs过滤器
  9. loadrunner throughput(吞吐量)理解
  10. [每日一题] OCP1z0-047 :2013-08-05 SELECT语句――列的表达式
  11. Stm32高级定时器(一)
  12. Cookie获取、设置值
  13. PHP获取网址的PR值
  14. C#调用matlab出错r6034错误解决方法[转载]
  15. set multiset 集合实现众数的统计
  16. Shell第三篇:基本语法
  17. 关于Mybatis的一次pingQuery时间间隔的实践及思考
  18. SpringMVC中前后端Date交互
  19. java第一次课
  20. .Net转Java.06.字符串的split的区别

热门文章

  1. VC中添加消息响应函数
  2. Linux Shell编程 test命令
  3. Django-虚拟环境设置
  4. Shell编程之变量进阶
  5. 使用awk来提取内容
  6. iOS应用网络安全之HTTPS
  7. JAVA 集成 Ueditor 百度富文本编辑器
  8. JMeter学习(十二)JMeter学习参数化User Defined Variables与User Parameters
  9. Oracle数据库类型总结
  10. Centos7 docker容器 搭建