我正在开发我的第一个django网站。django:在视图层调试代码
我在视图层编写的代码(即返回一个HttpResponse对象的视图模板处理程序(希望我使用的是正确的术语)。
在任何情况下,我希望把打印语句在我views.py文件,以便我可以调试它,但是,它看起来像标准输出已重定向到另一个流,所以我没有看到任何打印出我的控制台(甚至浏览器)上的任何东西。推荐的方法(最佳做法)用于调试django查看图层脚本?
我正在开发我的第一个django网站。django:在视图层调试代码
我在视图层编写的代码(即返回一个HttpResponse对象的视图模板处理程序(希望我使用的是正确的术语)。
在任何情况下,我希望把打印语句在我views.py文件,以便我可以调试它,但是,它看起来像标准输出已重定向到另一个流,所以我没有看到任何打印出我的控制台(甚至浏览器)上的任何东西。推荐的方法(最佳做法)用于调试django查看图层脚本?
使用Python logging
模块。然后使用Django调试工具栏,它会捕获并显示发送给日志的所有内容。
啊,这是一个Django调试栏(酷 - 这应该让事情更熟悉[我知道另一个框架])。如何打开django调试工具栏。可以显示一个小片段?日志记录文件是我想要做的事情 - 只需打印调试语句* SOMEWHERE * – skyeagle 2010-11-01 14:45:02
哪个Django调试工具栏? [robhudson](http://github.com/robhudson/django-debug-toolbar)或[dcramer](http:// github。COM/dcramer/Django的调试工具栏)? @skyeagle:链接有安装说明。 – 2010-11-01 14:45:13
@Mike DeSimone我不知道David的叉子 - 它有什么不同? – 2010-11-01 15:49:41
有更高级的方法来做它,bu吨我找到下降
import pdb
pdb.set_trace()
做的工作。
需要说明的是:您是否将上述语句添加到您的views.py文件中,然后像平常一样使用print,或者使用其他命令来打印您想要显示的内容? – skyeagle 2010-11-01 14:31:08
你添加了那些你想要进入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
我会upvote dysmsyd,但我没有声望。 pdb是好的,因为它可以让你通过你的程序并遵循控制流程。
如果您使用的是django runserver,则可以打印到stdout或stderr。 如果您使用的是mod_wsgi,则可以打印到stderr。 的pprint模块也很有用:
import sys
from pprint import pprint
def myview(request):
pprint (request, sys.stderr)
尝试django-sentry。特别是如果你的项目处于生产阶段。
import logging
使用日志进行调试: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)
这很奇怪。 'print'对我们来说可以使用默认的Django runserver。 (如果有问题,我们正在运行Windows。) – AKX 2010-11-01 14:44:02