django:在视图层中调试代码

时间:2010-11-01 14:25:04

标签: django django-views

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

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

在任何情况下,我都想将print语句放在我的views.py文件中,以便我可以调试它。但是,看起来stdout已经重定向到另一个流,所以我没有在控制台(甚至是浏览器)上看到任何打印出来。

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

5 个答案:

答案 0 :(得分:3)

有更高级的方法,但我发现丢弃

import pdb
pdb.set_trace()

完成这项工作。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我支持dysmsyd,但我没有声誉。 pdb很好,因为它允许您逐步执行程序并遵循控制流程。

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

import sys
from pprint import pprint

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

  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')

  4. 以下是我在班级视图中的工作原理:

    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)