代码之家  ›  专栏  ›  技术社区  ›  VikR

Django argparse:无法识别的参数--设置?

  •  -1
  • VikR  · 技术社区  · 4 年前

    我看过其他关于未识别的argparse参数的SO线程,但它们似乎都不符合我的情况。

    这是我的argparse代码,位于 apps/create_pdf/management/commands/create_pdf.py :

    
    from django.core.management.base import BaseCommand, CommandError
    
    class Command(BaseCommand):
        help = 'html to pdf for specified website.'
    
        def add_arguments(self, parser):
            print('cp#1')
    
            parser = argparse.ArgumentParser(description='html to pdf for specified website')
            parser.add_argument('-w', '--website', nargs =1, action = 'store', choices = ['SITE_1', 'SITE_2'], default='', help='site to be scraped.')
            args = parser.parse_args()
    
            print(args)
            breakpoint()
    
        def handle(self, *args, **options):
            print('cp#2')
    
            # create_pdf_from_html()
    

    我在终端上这样运行:

    python3 manage.py create_pdf --website=SITE_1 --settings=server_config.settings
    

    ...我得到了一个错误:

    管理py:错误:无法识别的参数:create_pdf--settings=server_config。设置

    设置路径是正确的,如果我没有使用argparse,一切都会正常运行。

    我错过了什么?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Oleksii Tambovtsev    4 年前

    向命令中添加参数的正确方法:

    from django.core.management.base import BaseCommand, CommandError
    
    class Command(BaseCommand):
        help = 'html to pdf for specified website.'
    
        def add_arguments(self, parser):
            parser.add_argument('-w', '--website', nargs =1, action = 'store', choices = ['SITE_1', 'SITE_2'], default='', help='site to be scraped.')
    
    
        def handle(self, *args, **options):
            print(options['website'])
    
            # create_pdf_from_html()