当我从我的Django应用程序中"打印"它们时会发生什么事情?

Ram*_*hum 6 python django

我在Linux服务器上有一个Django应用程序.在其中一个视图中,print执行某种形式的命令,并打印一些字符串.如何找出打印的字符串是什么?是否有一些记录保存这些东西?

Jos*_*hua 5

输出应该在启动django的终端中。(如果您不直接启动它,我不相信有一种阅读方法)

正如linkedlinked指出的那样,最好不要使用print,因为这可能会导致异常!但这不是唯一的原因:为此目的而设计了一些模块(例如logging),它们具有更多选择。

这个站点(即使是从2008年开始)也证实了我的观点:

如果您想知道视图中发生了什么,最快的方法是放入打印语句。的开发服务器输出任何打印语句直接到终端; 它是JavaScript Alert()的服务器端替代方法。

如果您希望对日志记录更加复杂,则值得使用Python的日志记录模块(标准库的一部分)。您可以在settings.py中对其进行配置:此处描述了操作方法(在网站上查看)

出于调试目的,您还可以启用调试模式或使用django-debug-toolbar

希望能帮助到你!:)


hca*_*ves 5

永远不要使用print,因为一旦部署,它就会打印到标准输出并且 WGSI 会中断。

使用日志记录。出于开发目的,非常容易设置。在你的项目 __init__.py 上:

import logging
from django.conf import settings

fmt = getattr(settings, 'LOG_FORMAT', None)
lvl = getattr(settings, 'LOG_LEVEL', logging.DEBUG)

logging.basicConfig(format=fmt, level=lvl)
logging.debug("Logging started on %s for %s" % (logging.root.name, logging.getLevelName(lvl)))
Run Code Online (Sandbox Code Playgroud)

现在您记录的所有内容都转到 stderr,在本例中,是您的终端。

logging.debug("Oh hai!")
Run Code Online (Sandbox Code Playgroud)

另外,您可以使用 LOG_LEVEL 设置控制settings.py上的详细程度。