Flask入門~公式ドキュメントを読み解く~ Day 2 ~
前回の内容
前回の記事では、Anacondaのインストールと最初のFlaskアプリケーション作成を行いました。
今回からいよいよ、公式サイトのチュートリアルを進めていきます。*1
完成イメージ
チュートリアルでは、以下のようなブログアプリが作成できます。
アプリケーションのセットアップ
まずは、アプリケーションのセットアップを行います。Ubuntu上でhomeディレクトリに「flask-tutorial」というディレクトリを作り、その中で「fraskr」というディレクトリを作ります。そして、flaskrディレクトリの中に__init__.pyを作ります。
cd ~ mkdir flask-tutorial cd flask-tutorial mkdir flaskr vi ./flaskr/__init__.py
すると、viで__init__.pyの編集画面に移るので、以下を入力してください。viでの編集が苦手な方は、ホストOS側でAtomやVisual Studio Codeなどのエディタでファイルを作成し、CyberDuckのようなFTPクライアントを利用してファイルを転送する方法も可能です。
__init__.pyはflaskrの初期化処理として実行されるので、ここにFlaskインスタンスを生成するメソッドを記述します。また、__init__.pyが配置されたディレクトリは、パッケージとしてみなされるようになります。
import os from flask import Flask def create_app(test_config=None): # アプリケーションの生成と設定を行う app = Flask(__name__, instance_relative_config=True) app.config.from_mapping( SECRET_KEY='dev', DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'), ) if test_config is None: # testではない場合に、インスタンスの設定値が存在すれば読み込む app.config.from_pyfile('config.py', silent=True) else: # テストの設定を読み込む app.config.from_mapping(test_config) # instanceフォルダが存在することを保証する try: os.makedirs(app.instance_path) except OSError: pass # helloを返すシンプルなページ @app.route('/hello') def hello(): return 'Hello, World!' return app
以下、公式サイトの説明を翻訳していきます。直訳で分かりづらい箇所については適宜意訳しています。
- app = Flask(__name__, instance_relative_config=True) はFlaskインスタンスを生成する
- app.config.from_mapping() はアプリケーションが使用するデフォルト設定をセットする:
- app.config.from_pyfile()はinstanceフォルダにconfig.pyが存在すれば、デフォルト設定値をそこから得られる値で上書きする。例えば、デプロイの際に実際のSECRET_KEYに置き換えることができる。
- os.makedirs()はapp.instance_path が存在することを保証する。(instanceディレクトリ作成をtryし、ディレクトリが存在しない場合は作成、既に存在している場合は例外が発生しpassされる)
- @app.route()はシンプルなルートを生成し、残りのチュートリアルに進む前に動作確認をすることができる。 ここでは、URL/hello と関数を結びつけ、'Hello, World!' という文字列を返す。
ではここで、一度実行してみます。
export FLASK_APP=flaskr # flaskrアプリケーションを指定する export FLASK_ENV=development # developmentモードで実行することを指定する flask run --host=0.0.0.0 # ホストOSから確認したいので--host=0.0.0.0をつける
developmentモードで実行しておくと、例外が発生した場合に対話型のデバッガーを表示したり、コードを修正した場合に自動でサーバを再起動してくれるなどのメリットがあります。
ここまで出来たら、ホストOSのブラウザからhttp://192.168.33.10:5000/hello にアクセスしてみましょう。Hello, Worldと表示されれば成功となります。
まとめ
今回はチュートリアルの完成イメージの確認と、アプリケーションのセットアップを行いました。
次回はデータベースを作成していきます。
内容について、質問・指摘があればコメントよろしくお願いします。