質問: Pythonについて。 只今、『入門 Python3』を読みながら、 JupyterLabを使ってPythonを学んでいます。 OSはwindows10です。 この業界は初心者です。 言葉や言葉の使い方が正確ではないことがあります。 質問文で気になったことがあれば、何なりとご指摘くださいませ。 私はそれを揚げ足取りとは感じません。 自身の成長のために必要なことだと思っています。 --- では、質問です。 Bottleモジュールを使ったウェブサーバの実行について。 まずは、以下のコードをご覧ください。 『入門 Python3』に書かれていたコードです。 ``` from bottle import route, run, static_file @route('/') def home() : return static_file('index.html', root='.') @route('/echo/') def echo(thing) : return "Say hello to my little friend : %s!" % thing run(host='localhost', port=9999) ``` そして、このプログラムを実行し、 `http://localhost:9999/echo/Mothra` にアクセスすると、 ``` Say hello to my little friend : Mothra ``` と表示されます。 私はこれを実行するのにとても時間を費やしましたが、ようやく様々な回答者のおかげで解決できました。 --- 次に、私はこのコードを自分で書けるようになりたいと思い、理解するためにコードを眺めていましたが、3つ、気になったことがあります。 1つ、 `@route('/')` の、『`/`』というのはホームページという意味になるらしいのですが、 このホームページというのは、 `http://localhost:9999` のことでしょうか? 2つ、`return static_file("index.html",root=".")` より、 `static_file()` 関数は、 `index.html` というファイルを、カレントディレクトリ(同じフォルダ内)から探して返しているということでしょうか? 3つ、`Say hello to my little friend : Mothra` と表示させるのに、そもそも ``` @route('/') def home() : return static_file('index.html', root='.') ``` は必要なのでしょうか? 是非、回答をお願いいたします。
回答: > > 1つ、 @route('/') の、『/』というのはホームページという意味になるらしいのですが、 > > このホームページというのは、 のことでしょうか? > > > ホームページという表現が適切かはわかりませんが。。。 ``` @route('/') ``` 公式のマニュアルに記載が見つけられなかったので、ずれているかもですが、その理解で問題ないです。 つまりhttp://<待ち受けホストのIPアドレス>:<待ち受けアドレス>/が呼ばれたときに、その関数を呼び出すという意味です。 > > 2つ、return static_file("index.html",root=".") より、 static_file() 関数は、 index.html というファイルを、カレントディレクトリ(同じフォルダ内)から探して返しているということでしょうか? > > > マニュアルに > > Be careful when specifying a relative root-path such as root='./static/files'. The working directory (./) > > and the project directory are not always the same. > > > とあるように、開発ディレクトリの「カレント」とサーバ動作時の「カレント」は異なる場合があります。つまり、サーバ起動時に「カレント」としたディレクトリから「相対パスで」静的なファイルを特定し返却することになります。 > > は必要なのでしょうか? > > > 以下の記載にあるように静的なhtmlを表示する場合に推奨されています。(Fileオブジェクトを返却することもできるようですね。)。Mimeタイプのハンドリングと403/404のケアをしてくれるようです。 > > You can directly return file objects, but static_file() is the recommended way to serve static files. It automatically guesses a mime-type, adds a Last-Modified header, restricts paths to a root directory for security > > reasons and generates appropriate error responses (403 on permission errors, 404 on missing files). > > >