Flask Tutorialの冒頭"Application Setup"の例が動かないで弱った話
Python用軽量WebフレームワークであるFlaskのチュートリアルをやっています。
チュートリアルの一番最初の”Applicaton Setup”という章にHello, World的なアプリケーションを動かす例が載っているのですが、これが動かず、少々焦りました。
この例ではflaskrというチュートリアル用ディレクトリを作ったあと、その中にアプリケーションを定義して生成する__init__.pyというファイルを作ると書かれています。このファイルをパラメータにしてFlaskを起動して、ブラウザで http://127.0.0.1:5000/hello にアクセスすると、”Hello, World!”と表示される、というシンプルな例です。
ところが、書かれている通りに__iniit__.pyを作成してflaskを起動しても、404 Not Foundエラーが出て、Hello, Worldが表示されません。
どうしたものかと悩みましたが、ブラウザの挙動の挙動とコードが合っていないことに気づき解決できました。
__init__.pyの最後部、ブラウザのアクセスを受け付けてメッセージを表示する部分は、Flask TutorialのWebページでは下記のように記載されています。
# a simple page that says hello @app.route('/hello') def hello(): return 'Hello, World!'
この中の、
@app.route('/hello')
がアクセス先のURLを規定しており、このソースだと http://127.0.0.1:5000/hello になるわけです。
で、ブラウザ( Chrome, MacOS)で上記URLにアクセスすると……Chromeが勝手にURLを補完し、最後に’/’を追加して、接続先URLが http://127.0.0.1:5000/hello/ になっていました。
こういうときにどうすればいいか、まだよくわかっていないのですが、とりあず、
@app.route('/hello')
の’/hello’を’/hello/’に修正し、下記のコードに直したら無事にHello, Worldが表示されるようになりました。
# a simple page that says hello @app.route('/hello/') def hello(): return 'Hello, World!'
こういう、ブラウザの挙動で接続先URLが曖昧になるような場合、どのようにコードを書くのが正解なのでしょうか……