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ファイルにはいくつかのprintステートメントが含まれています。繰り返しになりますが、ヘッダーの前にエラーが出力されるか、カスタムヘッダーを実行していない場合でも、無効なドキュメントが表示されます。したがって、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.
?>
これはややかさばりますが、その問題を防ぎます。これで状況がわかりました。インクルードファイルの1つが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、またはその他の必要なレベルに変更するだけで、エラーのみが表示されます。リンクされたチュートリアルには、さらに多くの情報があります。
これがお役に立てば幸いです。