一尘不染

如何在Django中进行调试的好方法?

django

因此,我开始学习使用Python和更高版本的Django进行编码。第一次很难查看回溯,实际上要弄清楚我做错了什么以及语法错误在哪里。现在已经过去了一段时间,并且我想我已经有了调试Django代码的例程。由于这是我编码经验的早期,所以我坐下来,想知道我的操作方式是否无效并且可以更快地完成。我通常设法找到并纠正代码中的错误,但是我想知道是否应该更快地执行该操作?

我通常只使用Django启用时提供的调试信息。当事情按预期完成时,我因语法错误而使代码流中断很多,然后查看流中该点的变量以弄清楚代码在执行什么操作而不是我想要的。

但这可以改善吗?是否有一些好的工具或更好的方法来调试Django代码?


阅读 620

收藏
2020-03-26

共2个答案

一尘不染

有很多方法可以做到,但是最直接的方法就是简单地使用Python调试器。只需将以下行添加到Django视图函数中:

import pdb; pdb.set_trace()

要么

breakpoint() #from Python3.7
如果尝试在浏览器中加载该页面,浏览器将挂起,并提示你对实际执行的代码进行调试。

但是,还有其他选择(我不推荐使用):

* return HttpResponse({variable to inspect})

* print {variable to inspect}

* raise Exception({variable to inspect})

但是强烈建议所有类型的Python代码都使用Python调试器(pdb)。如果你已经到PDB,你想也想看看IPDB使用IPython中进行调试。

2020-03-26
一尘不染

模板标记的小工具:

@register.filter 
def pdb(element):
    import pdb; pdb.set_trace()
    return element

现在,你可以在模板内执行{{ template_var|pdb }}并输入一个pdb会话(假设你正在运行本地devel服务器),你可以在其中检查element你的内心状况。

这是查看对象到达模板时发生了什么情况的一种很好的方法。

2020-03-26