zoukankan      html  css  js  c++  java
  • 自定义Django Command

    转:

    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/

     
     
  • 相关阅读:
    【C语言】找出1000以内所有的素数
    【C语言】字符数组,碎碎念
    【C语言】将输入的10个数排序
    C语言 排序算法
    冒死透露!全球前25名最臭名昭着的黑客人物
    苹果系统新致命漏洞,黑客可以随意控制您的手机设备
    物流行业的5大安全风险
    黑客来势汹汹,数据科学能拯救社交媒体吗?
    Facebook超过1亿用户数据泄露,疑与中国黑客组织有关?
    太可怕了!黑客可以通过监控智能手机传感器窃取您的密码
  • 原文地址:https://www.cnblogs.com/yingqml/p/6553960.html
Copyright © 2011-2022 走看看