2010-11-01 59 views
4

我正在开发我的第一个django网站。django:在视图层调试代码

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

在任何情况下,我希望把打印语句在我views.py文件,以便我可以调试它,但是,它看起来像标准输出已重定向到另一个流,所以我没有看到任何打印出我的控制台(甚至浏览器)上的任何东西。推荐的方法(最佳做法)用于调试django查看图层脚本?

+2

这很奇怪。 'print'对我们来说可以使用默认的Django runserver。 (如果有问题,我们正在运行Windows。) – AKX 2010-11-01 14:44:02

回答

2

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

+0

啊,这是一个Django调试栏(酷 - 这应该让事情更熟悉[我知道另一个框架])。如何打开django调试工具栏。可以显示一个小片段?日志记录文件是我想要做的事情 - 只需打印调试语句* SOMEWHERE * – skyeagle 2010-11-01 14:45:02

+0

哪个Django调试工具栏? [robhudson](http://github.com/robhudson/django-debug-toolbar)或[dcramer](http:// github。COM/dcramer/Django的调试工具栏)? @skyeagle:链接有安装说明。 – 2010-11-01 14:45:13

+0

@Mike DeSimone我不知道David的叉子 - 它有什么不同? – 2010-11-01 15:49:41

3

有更高级的方法来做它,bu吨我找到下降

import pdb 
pdb.set_trace() 

做的工作。

+0

需要说明的是:您是否将上述语句添加到您的views.py文件中,然后像平常一样使用print,或者使用其他命令来打印您想要显示的内容? – skyeagle 2010-11-01 14:31:08

+1

你添加了那些你想要进入python调试器的语句,从那里你可以检查你的视图函数的状态等等。它本身并不打印反正,但是终端/窗口运行“python manage.py runserver”命令到一个交互式调试器... screencast的等在这里http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-debugging-series-/和更多信息在这里http:// simonwillison.net/2008/May/22/debugging/ – sjh 2010-11-01 17:15:04

1

我会upvote dysmsyd,但我没有声望。 pdb是好的,因为它可以让你通过你的程序并遵循控制流程。

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

import sys 
from pprint import pprint 

def myview(request): 
    pprint (request, sys.stderr) 
0
  1. 配置的Django调试工具栏:https://github.com/django-debug-toolbar/django-debug-toolbar
  2. import logging

  3. 使用日志进行调试:pip install django-debug-toolbar并按照说明在配置它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)