Andrey Kuzmin 的回答是正确的,模板是正确的工作方式。
但是,如果您确实想生成在 php 'print ("blah");' 中返回的文本 某种方式,你可以像这样工作:
class index:
def GET(self):
output = []
# do stuff...
output.append('Some text.')
# do more stuff...
output.append('And more text...')
# ok, now we're at the end:
return '<br/>'.join(output)
这会将您添加到“输出”列表中的所有文本连同 HTML 换行符一起返回给浏览器/客户端。
尽管如此,模板几乎总是一种更好的工作方式。
为什么模板和单个“返回”更好?
在 PHP 中,将内容“打印”到输出非常容易,而且很方便。但是,想象一下:
<?php
include('foobar.php');
header('Content-Type: Application/JSON');
print ('{"message": "Hello World!"}');
?>
太好了,对吧?问题是说您尝试包含的文件中有错误(foobar)。现在 PHP 错误信息将在 HTTP 标头之前返回给客户端,这将导致另一个 PHP 错误,以及一个混乱的页面。
或者,
foobar.php 文件中有一些打印语句。同样,您现在在标题之前打印了错误,或者即使您没有执行自定义标题,您仍然会得到无效的文档。所以在 PHP 中,解决方案是这样的:
<?php
ob_start(); // start caching all output, so it doesn't interfere.
include('foobar.php');
do_other_stuff();
ob_end_flush(); // print the cached output.
?>
虽然有些笨重,但可以解决这个问题。现在您遇到了这种情况 - 如果您的包含文件之一也使用 ob_start() 或其他输出缓存怎么办?只要他们的代码没有错误,你应该没问题。但是,如果出现错误,并且 php 在刷新之前崩溃,您将丢失该信息。
在 Python 中使用单个端点意味着您可以更好地控制返回的内容。在一些旧的 PHP 代码中,我必须维护有时会打印某些内容(可能是错误消息),并且我必须搜索整个代码库以尝试找到打印的位置。
那么如何打印调试消息?
在 Python 中,有一个非常有用的“日志记录”模块(http://docs.python.org/2/howto/logging.html,或 google 获取更多教程),它允许您将所有错误消息记录到文件中,或者多个文件。然后,您可以在测试时“tail -f”该文件,并在发生时观察所有错误或调试信息,而不是在浏览器中等待它,因为它可能会被 CSS 或 HTML 格式弄乱或混淆。
这也意味着您意外向浏览器发送调试消息(可能带有敏感信息)的可能性要小得多,并且您可以在站点仍然保留最终生产的同时在日志记录级别(大量调试信息、仅错误等)之间切换外貌。
import logging
logging.basicConfig(filename='my_application.log', level=logging.DEBUG)
log = logging.getLogger(__name__)
# do stuff....
log.debug('This is a debug message')
# do more stuff
log.error('Oh no! This should not happen!')
# ...
您现在将获得一个名为 my_application.log 的文件,其中包含所有错误和调试消息,例如:
appname:DEBUG:This is a debug message
appname:ERROR:Oh no! This should not happen!
要停止显示调试消息,您只需将级别从 logging.DEBUG 更改为 logging.ERROR,或您想要的任何其他级别,您只会得到错误。链接的教程有更多信息。
我希望这个对你有用!