【问题标题】:django: debugging code in the view layerdjango:在视图层调试代码
【发布时间】:2010-11-01 14:25:04
【问题描述】:

我正在开发我的第一个 django 网站。

我在视图层中编写了代码(将 HttpResponse 对象返回到视图模板的处理程序(希望我使用了正确的术语)。

无论如何,我想将打印语句放在我的views.py 文件中,以便调试它。但是,看起来标准输出已被重定向到另一个流,所以我没有看到我的控制台(甚至浏览器)上打印出任何内容。

调试 django 视图层脚本的推荐方式(最佳实践)是什么?

【问题讨论】:

  • 这很奇怪。 print 确实适用于我们的默认 Django 运行服务器。 (如果这很重要,我们正在运行 Windows。)

标签: django django-views


【解决方案1】:

有更高级的方法,但我发现下降

import pdb
pdb.set_trace()

完成这项工作。

【讨论】:

  • 要明确一点:您是将上述语句添加到您的 views.py 文件中,然后正常使用 print,还是使用其他命令打印您想要显示的内容?
  • 你添加那些你想要进入 python 调试器的语句,从那里你可以检查你的视图函数的状态等。它不会自己打印 antying,而是打开终端/窗口运行“python manage.py runserver”命令进入交互式调试器...屏幕录像等在这里ericholscher.com/blog/2008/aug/31/…和更多信息在这里simonwillison.net/2008/May/22/debugging
【解决方案2】:

使用 Python logging 模块。然后使用 Django 调试工具栏,它将捕获并显示您发送到日志的所有内容。

【讨论】:

  • 啊,有一个 Django 调试栏(很酷 - 这应该让事情更熟悉 [我知道的另一个框架])。如何打开 django 调试工具栏。可以显示一点sn-p吗?日志记录文档非常适合我想要做的事情 - 只需打印一个调试语句 SOMEWHERE
  • 哪个 Django 调试工具栏? robhudson 还是 dcramer? @skyeagle:链接有安装说明。
  • @Mike DeSimone 我不知道大卫的叉子 - 它有什么不同?
  • 我不知道。一直想用滴滴涕,但一直没搞定,于是在谷歌上搜索,找到了这两个。来自 dcramer 的项目页面,“它包括替代样式、性能优化和一些可能在主存储库中不可用的面板。”我目前缺乏使用 DDT 的经验,因此无法确定这一点。
【解决方案3】:

我会支持dysmsyd,但我没有名声。 pdb 很好,因为它可以让您逐步完成您的程序并遵循控制流程。

如果您使用 django runserver,您可以打印到 stdout 或 stderr。 如果您使用的是 mod_wsgi,您可以打印到 stderr。 pprint 模块也很有用:

import sys
from pprint import pprint

def myview(request):
   pprint (request, sys.stderr)

【讨论】:

    【解决方案4】:

    试试django-sentry。特别是如果您的项目处于生产阶段。

    【讨论】:

      【解决方案5】:
      1. 配置 django 调试工具栏:pip install django-debug-toolbar 并按照说明进行配置:https://github.com/django-debug-toolbar/django-debug-toolbar
      2. import logging

      3. 使用日志进行调试:logging.debug('My DEBUG message')

      这是它在我的班级视图上的工作方式:

      from django.views.generic import TemplateView
      import logging
      
      
      class ProfileView(TemplateView):
          template_name = 'profile.html'
      
          def get(self, request, *args, **kwargs):
              logging.debug(kwargs)
              return render(request, self.template_name)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 1970-01-01
        • 2017-07-11
        • 2012-08-16
        • 1970-01-01
        相关资源
        最近更新 更多