【问题标题】:Django custom command not working with argsDjango 自定义命令不适用于 args
【发布时间】:2019-11-12 07:41:11
【问题描述】:

我正在尝试在 Django 2.0 中使用 args 调用该命令。当我传递参数时,它会给出以下错误消息:

"TypeError: Unknown option(s) for dummy command: args。有效选项有:help、no_color、pythonpath、settings、skip_checks、stderr、stdout、traceback、url、verbosity、version。"

该命令适用于选项。仅在使用 args 调用时才会导致此错误。

我的命令代码:

from django.core.management.base import BaseCommand


class Command(BaseCommand):
    help = 'A description of your command'

    def add_arguments(self, parser):
        parser.add_argument(
            '--url', required=False,
            type=str,
            help='the url to process',
        )

    def handle(self, *args, **options):
        for url in args:
            self.stdout.write(url)

这里我调用命令

from django.core.management import call_command
from django.test import TestCase


class DummyTest(TestCase):

    def test_dummy_test_case(self):
        call_command("dummy", args=['google.com'])

【问题讨论】:

    标签: python django django-manage.py django-commands


    【解决方案1】:

    命令参数设置为url,而不是args;做:

    call_command("dummy", url='google.com')
    

    Django 管理命令使用argparse 进行参数解析;通过doc 获得更多关于其工作原理的想法。

    【讨论】:

    • 这是有问题的,因为我想使用 call_command 而不是例如module.management.commands.Command().handle() 是我想做一个命令的端到端测试,包括arg解析。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2012-05-28
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多