質問: 9999) ``` というコードが書かれたbottle2.pyという名前のファイルを作り、 実行しました。 しかし、サーバーを再起動したりサーバースクリプトを実行したにも関わらず、 表示されたのは It isn't fancy, but it's my home page でした。 1. 最初にbottle1.pyを実行せずにサーバーにアクセスしたときに、なぜ、一見正しく表示することが出来たのでしょう? 2. bottle2.pyを実行したのに、なぜ、『My new and improved home page!!!』が表示されないのでしょう? 長文でしたが、最後まで読んでいただきありがとうございました。
回答: > > 1. 最初にbottle1.pyを実行せずにサーバーにアクセスしたときに、なぜ、一見正しく表示することが出来たのでしょう? > > の回答です。 > > > **過去最低1回は、ブラウザでhttp://localhost:9999にアクセスしたときのキャッシュが残っていた。(推測です)** ``` python bottle1.py ``` を実行せずに、ブラウザで`http://localhost:9999`にアクセスしたときに、 `"It isn't fancy, but it's my home page"`と表示されたのですね。 それまで1回も`python bottle1.py`を実行せずに、この文言がブラウザに表示されることは考え難いので(偶然の一致が過ぎる)、おそらく1回は`python bottle1.py`を実行したものと推測します。 となると、以下のケースが考えられます。 1)過去実行した`python bottle1.py`が生きていた 2)ブラウザのキャッシュに残っていた サーバの再起動でも表示されるとなると「ブラウザのキャッシュに残っていた」ことが有力です。 ChromeやLynxで試してみましたが現象を再現できませんでした。原因は別にあるかもしれません。 > > 2. bottle2.pyを実行したのに、なぜ、『My new and improved home page!!!』が表示されないのでしょう? > > > **コードにエラーがあり、表示されない** ``` from bottle import route, run, static_file @route('/') def main() : return static_file('index.html', root = '.') run(host = 'localhost', port = 9999) ``` を実行すると次のエラーが発生します。 ``` File "bottle2.py", line 4 return static_file('index.html', root = '.') ^ IndentationError: expected an indented block ``` こちらの環境で、インデントを正した`bottle2.py`を実行したところ、'index.html'の内容が表示されました。 ``` from bottle import route, run, static_file @route('/') def main() : return static_file('index.html', root = '.') run(host = 'localhost', port = 9999) ```