打印声明导致500响应

时间:2014-07-25 06:04:10

标签: django python-3.x

def gettable(request):
    reqdata = request.POST
    data = reqdata['dataabc']
    # print data
    return HttpResponse("OK")

这样可行,但只要我取消注释print data,我就会在我的开发控制台中看到500响应。

为什么会发生这种情况?我只需要打印一些东西到控制台进行测试。

2 个答案:

答案 0 :(得分:2)

python 3

In python 3, print is a function. 使用print作为语句将失败并引发异常,该异常将过早终止您的视图函数并导致错误500

日志记录模块

print是库和服务器端/后台任务代码中的不良做法。请改用logging模块。 django甚至有section for how to configure and use logging properly

mod_wsgi和print

https://code.google.com/p/modwsgi/wiki/DebuggingTechniques

mod_wsgi版本3.0之前,当printsys.stdout一起使用时,您会看到这一点:

IOError: sys.stdout access restricted by mod_wsgi

您需要明确使用文件,例如:

print >> sys.stderr, data  # python 2

但是,您可以通过编辑配置并使用WSGIRestrictStdout指令来禁用限制。

答案 1 :(得分:0)

完全同意dnozay。记录模块是一种可行的方法。

有关wsgi的print语句的更多信息: http://blog.dscpl.com.au/2009/04/wsgi-and-printing-to-standard-output.html?m=1