ラズパイデスクトップでFlask入門(4)Tutorial Register with the Application
こんばんは。國松です。
少し間隔が開いてしまいましたが前回の続きです。
Flaskのサイト
Welcome to Flask (英語版)
Flaskへようこそ (日本語版)
Register with the Application(アプリケーションに登録する)
colse_db関数とinit_db関数はアプリケーションインスタンスに登録する必要があります。
そうしないとアプリケーションによって使用されないからです。
アプリケーションを取得して登録を行う関数を作成していきます。db.pyに以下のコードを追記していきます。
flaskr/db.py
1 2 3 | def init_app(app): app.teardown_appcontext(close_db) app.cli.add_command(init_db_command) |
app.teardown_appcontext()
応答を返した後クリーンアップするときにclose_db関数を呼び出す様にFlaskに指示。
app.cli_add_command()
flaskコマンドで呼び出す事が出来る新しいコマンドを追加。
init_app関数をfactoryからimportして呼び出します。そのために__init__.pyのreturn appの前に以下のコードを追加します。
flaskr/__init__.py
1 2 3 4 5 6 7 8 | def create_app(): app = ... # existing code omitted from . import db #from flaskr import db db.init_app(app) return app |
Initialize the Database File
init_dbがアプリに登録されたのでflaskコマンドを使用して呼び出す事ができる様になりました。
flask init-db と入力すると
Initialized the database.と表示され、データベースが初期化されます。
(flask ini-dbでError: No such command “init-bd”.とエラーが出た場合はpython -m flask init-dbと入力してみてください)
これでプロジェクトのインスタンスフォルダーにflaskr.sqliteファイルが作成されます。
(※もし前回のHelloWorldを実行したままサーバーが動いている状態の場合は、サーバーを停止(Ctrl+c)するか、新しい端末でこのコマンド(flask init-db)を実行できます。 新しいターミナルを使用する場合は、プロジェクトディレクトリに移動し、環境のアクティブ化の説明に従ってenvをアクティブにすることを忘れないでください。 FLASK_APPとFLASK_ENVも設定する必要があります。)
1 2 | export FLASK_APP=flaskr export FLASK_ENV=development |
うまくいかない場合
上記のFlaskのサイトのTutorialの通りに入力してもうまく動かない場合以下のGtiHubから最新コード入手して実行してみてください。
GitHub Flask tutorial