PythonのWebアプリ開発用フレームワーク「Flask」の初歩の初歩、Hello, Worldをブラウザで表示するまでをまとめました。
#Flaskクラスのインスタンスを作成
まずFlaskでアプリケーションを作る際にはFlaskクラスのインスタンスを作成します。
from flask import Flask
app = Flask(__name__)
Flaskクラスは変数にこのインスタンスがあるモジュールの名前をとります。
シンプルな(.pyファイルが1つしかないような)アプリケーションの場合は上記で良いのですが、
そうでない場合はモジュール名を渡す必要があるので、
app = Flask(__name__.split('.')[0])
などとすることがドキュメントでは奨励されています。
いくつかの拡張ライブラリではデバック時にappの正しい場所を変数として渡していないとライブラリ側で検知されず、デバックに苦労するみたいです。
(ドキュメントではFlask_SQLAlchemyなどが拡張パッケージの例として挙げられています)
#ルーティングとView Function
通常のWebアプリケーションではクライアントサイド(主にブラウザ)とサーバーがリクエスト/レスポンスのやりとりをしますが、Flaskではサーバー側を前項で作ったappが担います。
そのため、作成したappに何のリクエストが来た場合にどんな処理をするのか、を明示する必要があります。
このうち、「何のリクエスト」を示すのがルーティング、「どんな処理」を示すのがview functionです。
ルーティングはappのrouteメソッドを使って、デコレータとして記述し、View Functionはその名の通り関数として定義します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello, World.</h1>'
routeメソッドは引数にURLを取り、マッピングを行います。
上記ではルート('/')にアクセスした際にhtmlのh1タグをつけてHello, World.と表示するように処理してます。
※リクエストのメソッドを指定できたり、URLにクエリパラメータを想定したりもできるのですが、一旦ここでは割愛します。
#ローカル環境でFlaskアプリを起動し、Webブラウザで表示する
Flaskでの処理は以上で、最後にローカル環境でアプリを起動すればOKです。
※今更ですがFlaskはすでにインストール済みの想定です。
先ほど記述した.pyファイルをapp.pyとし、そのディレクトリで環境変数にてアプリファイル名を指定し、
flask runでアプリを起動します。
$ export FLASK_APP=app.py
$ flask run
* Serving Flask app "app.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
上記の場合はhttp://127.0.0.1:5000/で起動しているので、ブラウザからアクセスすればきっとHello, World.と表示されていることでしょう。