Python参数:为Django设置的Django调试参数管理.py

2024-05-20 19:54:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用VisualStudio调试工具^{{cd1>}启用调试。使用此选项,我必须使用

ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
ptvsd.wait_for_attach()

使用ptvsd意味着我不能使用线程和重新加载,因此我附加了args

^{pr2}$

为了方便调试,我创建了一个args来执行这些代码行。我创建了命名参数^{cd2>}

^{pr3}$

我想要实现的是,当我想要调试我的应用时,我使用命令 python manage.py runserver 0:8000 --enable-debugging当我只想运行我的应用程序时,我使用^{cd4>}

但是当我尝试使用时,它返回一个错误 ^{cd4>}它表示^{{cd6>}和^{cd7>}的未识别参数

这样,我是否必须将所有可能的django位置参数包含到^{{cd8>}?那么如何使用^{cd7>}来实现这一点?添加所有可能的端口? 使用命名参数在本例中是否不可行?


Tags: 工具参数settingsremoteaddressenable选项args
1条回答
网友
1楼 · 发布于 2024-05-20 19:54:57

所以显然我可以使用parser.parse_known_args(),当有无法识别的参数时应该可以。因为我想要 debug作为一个标志,所以我在add_参数中添加action='store_true',因此只要参数存在,它就会返回true。在

这样,我就可以用它来解决这个问题,然后在传递给execute_from_command_line时删除 debug参数。像这样:

if __name__ == "__main__":
    #previous line omitted
    parser = argparse.ArgumentParser()
    parser.add_argument(" debug", action='store_true', help="enable debugging through vscode")
    args = vars(parser.parse_known_args()[0])
    if args.debug:
        sys.argv.append(" nothreading")
        sys.argv.append(" noreload")
        ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
        ptvsd.wait_for_attach()
    execute_from_command_line(sys.argv)

现在它起作用了:)

相关问题 更多 >