So, I started learning to code in Python and later Django. The first times it was hard looking at tracebacks and actually figure out what I did wrong and where the syntax error was. Some time has passed now and some way along the way, I guess I got a routine in debugging my Django code. As this was done early in my coding experience, I sat down and wondered if how I was doing this was ineffective and could be done faster. I usually manage to find and correct the bugs in my code, but I wonder if I should be doing it faster?

我通常只使用Django启用时提供的调试信息。当事情确实像我想象的那样结束时,我用一个语法错误破坏了代码流,并查看流中那个点的变量,以找出代码在哪里做了与我想要的不同的事情。

但这种情况还能改善吗?是否有一些更好的工具或方法来调试Django代码?


当前回答

调试python的最简单的方法——尤其是对习惯于Visual Studio的程序员来说——是使用PTVS (python Tools for Visual Studio)。 步骤很简单:

从https://microsoft.github.io/PTVS/下载并安装它 设置断点并按F5。 您的断点被击中,您可以查看/更改变量,就像调试c# / c++程序一样简单。 这就是全部:)

如果你想使用PTVS调试Django,你需要做以下事情:

在Project settings - General选项卡中,将“Startup File”设置为“manage.py”,这是Django程序的入口点。 在“项目设置-调试”选项卡中,将“脚本参数”设置为“runserver—noreload”。这里的关键点是“—noreload”。如果你不设置它,你的断点就不会被击中。 享受它。

其他回答

大多数选项都已经提到了。 为了打印模板上下文,我为此创建了一个简单的库。 参见https://github.com/edoburu/django-debugtools

你可以使用它来打印模板上下文,而不需要任何{% load %}结构:

{% print var %}   prints variable
{% print %}       prints all

它使用定制的pprint格式在<pre>标记中显示变量。

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

import pdb; pdb.set_trace()

or

breakpoint()  #from Python3.7

如果您试图在浏览器中加载该页,浏览器将挂起,并提示您对实际执行的代码进行调试。

但是也有其他的选择(我不推荐):

* return HttpResponse({variable to inspect})

* print {variable to inspect}

* raise Exception({variable to inspect})

但是对于所有类型的Python代码,强烈推荐使用Python调试器(pdb)。如果您已经开始使用pdb,那么您还需要了解使用ipython进行调试的IPDB。

对pdb有一些更有用的扩展

pdb++,由Antash建议。

pudb,由PatDuJour建议。

在Django中使用Python调试器,由Seafangs建议。

在开发过程中,快速添加

assert False, value

可以帮助诊断视图或其他任何地方的问题,而不需要使用调试器。

如果在django开发中使用Aptana,请注意:http://www.youtube.com/watch?v=qQh-UQFltJQ

如果没有,考虑使用它。

我使用PyCharm和其他调试工具。还有一篇不错的文章介绍如何为新手设置这些东西。你可以从这里开始。它讲述了Django项目的PDB和GUI调试。希望有人能从中受益。