我面临 VsCode 的调试问题,它无法触发任何类型的断点(标准或日志),但特别是在视图调用和模板上。 Django 项目结构其他部分的断点可以正常工作。例如在此代码示例中:
class HomeView(TemplateView):
template_name = "home/home.html"
def get(self, request, *args, **kwargs):
return render(request, self.template_name, {})
template_name = "home/home.html"
上的断点将在类构造时成功触发。然而,return render(request, self.template_name, {})
上的断点永远不会触发(我希望它在用户导航到此类呈现的 URL 时触发)。
我已经尝试过的一些事情:
4 个月前的时间线是因为我上次使用 Django 并调试视图是大约 4 个月前,所以我想我会尝试这些版本。我相当确定上次尝试时这有效,但我可能是错的。
作为参考,我使用标准 Django 启动配置。我尝试更改一些选项,例如
--noreload
和 stopOnEntry
,但这并没有影响结果。复制下面的配置文件以供参考:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}\\manage.py",
"args": [
"runserver"
],
"django": true
}
]
}
此外,在模板中设置断点也不会触发,并且在 get 方法调用的函数中设置断点也不会触发(基本上是 View 调用后的任何操作)。
我从文档中看到的一切都表明这应该有效,而且我以前也认为是有效的。这次我错过了什么或者发生了什么变化?
终于想通了。几周前,我为一个项目安装了 gevent (
pip install gevent
)。这样做将 GEVENT_SUPPORT=True
添加到我的环境变量中。启用后,这会阻止 VsCode 调试 Python 标准库的线程模块。将此变量更改为 False
为我解决了这个问题(当然我此时没有使用 gevent)。
有关此问题的更多信息可以在此处找到:https://github.com/microsoft/debugpy/issues/189
“django”:正确 在我的代码中,当我运行代码时,但问题是在终端中显示 NameError 为 true。它也没有调试断点。 { “版本”:“0.2.0”, “配置”:[ { "name": "Python: 当前文件", “类型”:“蟒蛇”, “请求”:“启动”, "程序": "${文件}", "console": "集成终端", “justMyCode”:正确, “django”:正确 },
{
"name": "Stock_manage",
"python": "/Users/akchhabhyashakya/Desktop/python/New stock/Stock_manage/my-venv/python3",
"type": "python",
"request": "launch",
"program": "/Users/akchhabhyashakya/Desktop/python/New stock/Stock_manage/manage.py",
"console": "internalConsole",
"args": [
"runserver"
]
}
]
}