Python args:为 django 设置的 django 调试 arg manage.py
Python args: django debugging arg set up for django manage.py
我想使用 visual studio 调试工具 ptvsd
启用调试。使用它我必须使用
将调试器附加到应用程序
ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
ptvsd.wait_for_attach()
使用 ptvsd 意味着我不能使用线程和重新加载,所以我附加了 args
sys.argv.append("--nothreading")
sys.argv.append("--noreload")
为了方便启用调试,我创建了一个 args 来执行这些代码行。我创建了命名参数 debug
if __name__ == "__main__":
#previous line omitted
parser = argparse.ArgumentParser()
parser.add_argument("--debug", help="enable debugging through vscode")
args = parser.parse_args()
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)
我想要实现的是,当我想调试我的应用程序时,我使用命令
python manage.py runserver 0:8000 --enable-debugging
当我只想 运行 我的应用程序时,我使用 python manage.py runserver 0:8000
但是当我尝试 运行 使用时 returns 出现错误
python manage.py runserver 0:8000
它说 runserver
和 0:8000
无法识别的参数
这样一来,我是否必须将所有可能的 django 位置参数包含在 parser
中?以及如何用 0:8000
做到这一点?添加所有可能的端口?
在这种情况下使用命名参数不可行吗?
所以显然我可以使用 parser.parse_known_args()
,当有无法识别的参数时应该没问题。因为我想要 --debug
作为标志,所以我在 add_argument 中添加了 action='store_true'
,所以只要参数存在,它就会 returns 为真。
有了它,我可以通过使用它来解决这个问题,然后在将它传递给 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)
现在可以了:)
我想使用 visual studio 调试工具 ptvsd
启用调试。使用它我必须使用
ptvsd.enable_attach(address=(settings.REMOTE_URL, settings.DEBUG_PORT), redirect_output=True)
ptvsd.wait_for_attach()
使用 ptvsd 意味着我不能使用线程和重新加载,所以我附加了 args
sys.argv.append("--nothreading")
sys.argv.append("--noreload")
为了方便启用调试,我创建了一个 args 来执行这些代码行。我创建了命名参数 debug
if __name__ == "__main__":
#previous line omitted
parser = argparse.ArgumentParser()
parser.add_argument("--debug", help="enable debugging through vscode")
args = parser.parse_args()
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)
我想要实现的是,当我想调试我的应用程序时,我使用命令
python manage.py runserver 0:8000 --enable-debugging
当我只想 运行 我的应用程序时,我使用 python manage.py runserver 0:8000
但是当我尝试 运行 使用时 returns 出现错误
python manage.py runserver 0:8000
它说 runserver
和 0:8000
这样一来,我是否必须将所有可能的 django 位置参数包含在 parser
中?以及如何用 0:8000
做到这一点?添加所有可能的端口?
在这种情况下使用命名参数不可行吗?
所以显然我可以使用 parser.parse_known_args()
,当有无法识别的参数时应该没问题。因为我想要 --debug
作为标志,所以我在 add_argument 中添加了 action='store_true'
,所以只要参数存在,它就会 returns 为真。
有了它,我可以通过使用它来解决这个问题,然后在将它传递给 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)
现在可以了:)