web程序调试起来和桌面程序有着很大的差别,对于Django程序来说调试更是个问题,虽然现在有第三方的调试工具robhudson-django-debug-toolbar,但使用起来并不是很方便,而且很多人习惯于通过print来调试,这样方便快捷。下面就介绍两种简单的调试方法: 1.充分利用Django的error page Django的error page功能很强大,能提供详细的traceback,包括局部变量的值,以及一个纯文本的异常信息。拥有同 phpinfo() 一样的作用,可以展示当前应用的相关设置,包括请求中的 GET, POST and COOKIE 数据以及HTTP环境中的所有重要META fields。
可以通过 assert False assert False, request.GET 来触发Django的错误页面,进而进行调试工作 2.输出log到开发服务器终端中 借助python的logging模块 在setting.py中添加如下配置 import logging logging.basicConfig( level = logging.DEBUG, format = '%(asctime)s %(levelname)s %(message)s', ) 在需要输出log信息的地方可以这样调用 import logging logging.debug("A log message") 这样一来就能在开发服务器的终端中看到想要输出的log,如果想将log信息记录到指定文件中去,调整logging的basicConfig即可,如下所示: logging.basicConfig( level = logging.DEBUG, format = '%(asctime)s %(levelname)s %(message)s', filename = '/tmp/myapp.log', filemode = 'w' )
有时我们发现我们的程序大部分情况下运行正常,只在特定环境中出现错误,此时可以使用 traceback module
记录当前栈存信息
import logging, traceback, pprint def my_buggy_function(arg): ... if error_condition: stack = pprint.pformat(traceback.extract_stack()) logging.debug('An error occurred: %s' % stack) |
|