【发布时间】:2021-06-16 11:43:02
【问题描述】:
我正面临 VsCode 的调试问题,它无法触发任何类型的断点(标准或日志),但特别是在 View 调用和模板上。 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 时触发)。
我已经尝试过的一些事情:
- 禁用除 Python、Jupiter 和 Pylance 之外的所有其他 VsCode 扩展
- 恢复到 4 个月大(我将在下面解释为什么 4 个月)版本的 VsCode、Python 扩展、PyLance 和 Django
- 创建基于函数的上述视图(也不会触发断点)
- 创建一个全新的 Django 项目(能够在一个全新的项目和其他两个现有项目中重现此项目)
4 个月大的时间线是因为我最后一次使用 Django 并调试 Views 大约是 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 调用后的任何内容)。
我从文档中看到的所有内容都表明这应该可以工作,而且我认为它曾经是。这次我错过了什么或发生了什么变化?
【问题讨论】:
-
作为参考,我只是尝试在 VM 中全新安装的 Windows 上重新创建此错误,并且它可以在相同的设置和 Python/Django 版本下正常工作。也许我的电脑上还有其他东西可能会干扰调试器?
-
-代码中是否调用了定义的“get()”方法?在 VS Code 中,我们需要提供 Django 功能的“Python”扩展。关于 Django 在 VS Code 中的使用,可以参考:Django Tutorial in Visual Studio Code。
-
感谢您的回复。是的,每当用户导航到该 URL 时都会调用它(URL 加载并且 Django 日志报告该方法已被调用并呈现)。也谢谢你的链接,昨天我已经通读了十几次试图弄清楚这一点哈哈。我注意到的另一件事是调试器没有报告我的主 PC 上的任何线程。它只显示 Django 调用的子进程,但不显示它产生的线程(它在 VM 上的位置)。
标签: python django debugging visual-studio-code breakpoints