如何在Django调试,好方法?

2024-04-25 13:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我开始学习在Python中编写代码,后来又开始学习Django。第一次是很难找到回溯,很难找出我做错了什么,语法错误在哪里。一段时间过去了,一段时间过去了,我想我在调试Django代码时有一个例程。由于这是在我早期的编程经验中完成的,所以我坐下来想知道我是如何做到这一点的,是否是无效的,是否可以更快地完成。我通常设法找到并纠正代码中的错误,但我想知道我是否应该做得更快?

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

但这能改进吗?有没有一些好的工具或者更好的方法来调试Django代码?


Tags: 工具django方法代码编程错误经验事情
3条回答

我真的很喜欢Werkzeug的交互式调试器。它类似于Django的调试页面,只是在回溯的每个级别上都有一个交互式shell。如果您使用django-extensions,您将得到一个runserver_plus管理命令,该命令启动开发服务器,并在出现异常时为您提供Werkzeug的调试器。

当然,您应该只在本地运行它,因为它赋予任何拥有浏览器的人在服务器上下文中执行任意python代码的权限。

有很多方法可以做到这一点,但最直接的方法是 使用Python debugger。只需在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,那么还需要查看使用ipython进行调试的IPDB

pdb的一些更有用的扩展是

pdb++,由Antash建议。

pudb,由PatDuJour建议。

Using the Python debugger in Django,由Seafangs建议。

模板标记的快速操作:

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

现在,在一个模板中,您可以执行{{ template_var|pdb }},并进入一个pdb会话(假设您运行的是本地devel服务器),在该会话中,您可以检查element的内容。

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

相关问题 更多 >