![]() |
1
481
有很多方法可以做到,但最简单的方法是 使用 Python debugger . 只需在django视图函数中添加以下行:
如果尝试在浏览器中加载该页,浏览器将挂起,并提示您对实际执行的代码进行调试。 但是,还有其他选择(我不建议这样做):
但是对于所有类型的Python代码,强烈推荐使用Python调试器(PDB)。如果你已经进入PDB,你也会想看看 IPDB 使用的 ipython 用于调试。 PDB的一些更有用的扩展是 |
![]() |
2
219
我真的很喜欢
Werkzeug
的交互式调试器。它类似于Django的调试页面,只是在每一个回溯级别上都有一个交互式shell。如果您使用
django-extensions
你得到了
当然,您应该只在本地运行它,因为它赋予任何拥有浏览器的人在服务器上下文中执行任意python代码的权利。 |
![]() |
3
155
模板标签有点快:
现在,在模板内您可以
这是一种非常好的方法,可以在对象到达模板时看到它发生了什么。 |
![]() |
4
80
有一些工具可以很好地协作,并且可以使调试任务变得更容易。 最重要的是 Django debug toolbar . 然后您需要使用python进行良好的日志记录 logging 设施。您可以将日志输出发送到日志文件,但更简单的选项是将日志输出发送到 firepython . 要使用它,您需要将firefox浏览器与 firebug 延伸。Fireython包含一个Firebug插件,它将在Firebug选项卡中显示任何服务器端登录。 Firebug本身对于调试您开发的任何应用程序的javascript方面也是至关重要的。(假设您当然有一些JS代码)。 我也喜欢 django-viewtools 用于使用PDB以交互方式调试视图,但我没有那么多的用途。 有更多有用的工具,如推土机,用于跟踪内存泄漏(这里的答案中也有其他好的建议,以便进行内存跟踪)。 |
![]() |
6
41
到目前为止,几乎所有的事情都提到了,所以我只想补充一下,而不是
|
![]() |
7
32
我推过
安装只是…
现在可以运行:
然后运行:
项目的宿主 GitHub 当然,我们欢迎您的贡献。 |
![]() |
8
20
调试python的最简单方法是使用ptv(用于Visual Studio的python工具),特别是对于用于Visual Studio的程序员。 步骤很简单:
如果要使用PTV调试Django,需要执行以下操作:
|
![]() |
10
10
我用 PyCharm 一路站着。这花了我一点钱,但我不得不说,我从中得到的好处是无价的。我试过从控制台进行调试,我确实给了人们很多可以做到这一点的信任,但是对于我来说,能够可视化地调试我的应用程序是非常好的。 但我不得不说, 幻影 需要很多记忆。但同样的,生活中没有什么好东西是自由的。他们刚推出最新版本3。它还可以与Django、Flask和Google Appengine配合使用。所以,总而言之,对于任何开发人员来说,它都是一个很好的方便工具。 如果您还没有使用它,我建议您使用试用版30天,看看Pycharm的强大功能。我确信还有其他工具可用,比如Aptana。但我想我也很喜欢小魔女的样子。我觉得在那里调试我的应用程序很舒服。 |
![]() |
11
9
在我看来,我们可以打破共同点 代码调试 任务分为三种不同的使用模式:
啊,是的,模板的不幸。最常见的(对我和我的同事)问题是上下文错误:要么你没有变量,要么你的变量没有属性。如果你在用 debug toolbar 只需检查“模板”部分的上下文,或者,如果还不够,则在填充上下文后在视图代码中设置一个中断。 就这样。 |
![]() |
12
8
有时,当我想用一种特定的方法四处探索,并且召唤PDB太麻烦时,我会补充:
|
![]() |
13
6
我强烈推荐EPDB(扩展的python调试器)。 https://bitbucket.org/dugan/epdb 我喜欢EPDB调试Django或其他PythonWebServer的一件事是epdb.serve()命令。这将设置一个跟踪,并在您可以连接的本地端口上提供该跟踪。典型用例: 我有一个观点,我想一步一步地进行。我将在要设置跟踪的点插入以下内容。
一旦执行了这段代码,我就打开一个python解释器并连接到服务实例。我可以使用标准PDB命令(如N、S等)分析所有值并逐步完成代码。
你可以随时学习输入EPDB帮助。 如果要同时服务或连接到多个EPDB实例,可以指定要侦听的端口(默认值为8080)。即。
如果未指定,主机默认为“localhost”。我把它放在这里演示如何使用它来调试本地实例以外的东西,比如本地LAN上的开发服务器。显然,如果这样做,请注意设置跟踪永远不会进入生产服务器!
作为一个简短的说明,你仍然可以用EPDB做与公认答案相同的事情。(
|
![]() |
14
6
我刚找到WDB( http://www.rkblog.rk.edu.pl/w/p/debugging-python-code-browser-wdb-debugger/?goback=%2Egde_25827_member_255996401 )它有一个非常好的用户界面/GUI,上面有所有的铃声和口哨。作者说这是关于WDB的- “有像Pycharm这样的IDE有自己的调试器。它们提供类似或相同的功能集…但是要使用它们,您必须使用那些特定的IDE(其中一些是非免费的,或者可能不适用于所有平台)。根据需要选择合适的工具。” 以为我会把它传下去。 还有一篇关于Python调试器的非常有用的文章: https://zapier.com/engineering/debugging-python-boss/ 终于 ,如果您想在Django中看到调用堆栈的良好图形打印输出,请签出: https://github.com/joerick/pyinstrument . 只需将pyinstrument.middleware.profilermiddleware添加到中间件类,然后添加?配置文件到激活探查器的请求URL的末尾。 也可以从命令行运行pyinstrument,或者作为模块导入。 |
![]() |
15
3
我用 PyCharm 以及不同的调试工具。还有一篇很好的文章,关于如何为新手轻松设置这些东西。 You may start here. 它介绍了在Django项目中的PDB和GUI调试。希望有人能从中受益。 |
![]() |
16
2
如果使用Aptana进行Django开发,请注意: http://www.youtube.com/watch?v=qQh-UQFltJQ 如果没有,考虑使用它。 |
![]() |
17
2
大多数选项都已提到。 为了打印模板上下文,我创建了一个简单的库。 见 https://github.com/edoburu/django-debugtools
您可以使用它打印模板上下文,而不需要任何
它使用自定义的pprint格式以
|
![]() |
18
2
我发现Visual Studio代码非常适合调试Django应用程序。标准python launch.json参数运行
|
![]() |
19
2
对于那些可能意外地将PDB添加到实时提交中的人,我可以建议扩展koobz答案:
|
![]() |
20
2
调试Django代码的最佳选择之一是通过WDB: https://github.com/Kozea/wdb
安装并运行服务器,在代码中添加:
据作者介绍,主要区别在于
它有一个很棒的基于浏览器的用户界面。使用的乐趣!:) |
![]() |
21
2
添加
还可以看到: https://poweruser.blog/setting-a-breakpoint-in-python-438e23fe6b28 |
![]() |
22
1
我强烈建议使用PDB。
您可以检查所有变量的值,单步执行函数等等。 https://docs.python.org/2/library/pdb.html 用于检查所有类型的请求、响应和对数据库的命中。我使用的是Django调试工具栏。 https://github.com/django-debug-toolbar/django-debug-toolbar |
![]() |
23
1
正如这里其他文章所提到的,在代码中设置断点并浏览代码以查看其行为是否如您预期的那样,这是一个很好的学习方法,比如Django,直到您对所有代码的行为以及代码正在做什么有了很好的了解。 为此,我建议使用Wingide。和前面提到的IDES一样,它很好且易于使用,布局也很好,而且还易于设置断点、评估/修改堆栈等,非常适合在代码执行过程中可视化代码。我很喜欢它。 另外,我还使用了pycharm——它具有出色的静态代码分析功能,可以帮助您在意识到问题存在之前发现问题。 如前所述,Django调试工具栏是必不可少的- https://github.com/django-debug-toolbar/django-debug-toolbar 虽然没有明确的调试或分析工具-我最喜欢的工具之一是 SQL打印中间件 可从Django Snippets获取,网址为 https://djangosnippets.org/snippets/290/ 这将显示视图生成的SQL查询。这将使您很好地了解ORM在做什么,以及您的查询是否有效,或者您需要重新编写代码(或者添加缓存)。 我发现它对于在开发和调试应用程序时关注查询性能非常有价值。 另外一个技巧-我对它进行了一些修改,以供自己使用,只显示摘要而不显示SQL语句…所以我总是在开发和测试时使用它。我还补充说,如果len(connection.queries)大于预先定义的阈值,它将显示额外的警告。 然后,如果我发现(从性能或查询数量的角度来看)发生了一些不好的事情,我将重新打开SQL语句的完整显示,以准确地看到正在发生的事情。与多个开发人员一起处理大型Django项目时非常方便。 |
![]() |
24
0
一个额外的建议。
你可以利用
鼻标本
和
PDB
一起,而不是注射
今天我有个错误。
现在,我知道这意味着我在表单的构造器上加了个Google,我甚至对哪个字段有了很好的了解。但是,我能用pdb看看脆的表格在抱怨什么吗? 在模板中 ? 是的,我能。使用 ——PDB 鼻测试选项:
一旦我遇到任何异常(包括处理得当的异常),PDB就会在它发生的地方停止,我可以四处看看。
现在,很明显,crispy字段构造函数的choices参数是列表中的列表,而不是元组列表/元组。
最有趣的是,这个PDB发生在Crispy的代码中,而不是我的代码,我不需要手动插入它。 |
![]() |
25
0
使用
对于PDB
对于IPDB
用于执行新行命中
|
![]() |
26
0
在开发过程中,添加一个
可以帮助诊断视图或其他任何地方的问题,而无需使用调试器。 |
![]() |
27
0
根据我自己的经验,有两种方法:
|
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |