大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイデスクトップでFlask入門(2)Tutorial (Application Setup)

著者:國松亜紗子
公開日:2019/09/30
最終更新日:2019/09/30
カテゴリー:技術情報

こんばんは。國松です。
今回からFlaskのサイトにあるTutorialをやっていきたいと思います。Tutorialを最後までやれば簡単なBlogアプリができるばずです。

参考サイト
Welcome to Flask (英語版)
Flaskへようこそ (日本語版)

Tutorial
このチュートリアルでは、Flaskrと呼ばれる基本的なブログアプリケーションを作成する方法を説明します。 ユーザーは、登録、ログイン、投稿の作成、自分の投稿の編集または削除ができます。 アプリケーションをパッケージ化して、他のコンピューターにインストールできます。
チュートリアルではFlaskのすべての機能について網羅することはできないのでFlaskでできることはQuickStartを確認してからドキュメントを確認するするなどして下さい。

Project Layout
まずチュートリアル用のディレクトリを作成していきます。

Flaskアプリケーションは前回やったように1つのファイルでも作ることができます。ただし、プロジェクトが大きくなると、すべてのコードを1つのファイルに保存するのが大変になります。 Pythonプロジェクトでは、パッケージを使用してコードを複数のモジュールに編成し、必要に応じてインポートできます。チュートリアルでもこれを行います。

チュートリアル全体の構成は以下様になります。

Application Setup
Flaskアプリケーションは、Flaskクラスのインスタンスです。 構成やURLなど、アプリケーションに関するすべてがこのクラスに登録されます。
Flaskインスタンスをグローバルに作成する代わりに、関数内に作成します。 この機能は、アプリケーションファクトリと呼ばれます。 アプリケーションが必要とする構成、登録、およびその他のセットアップは、関数内で行われ、アプリケーションが返されます。

The Application Factory
まずflaskrディレクトリを作成して移動します。

次にflaskrディレクトリの中に__init__.pyファイルを作ります。__init__.pyはアプリケーションファクトリを含み、flaskrディレクトリをパッケージとして扱う必要があることをPythonに伝えます。

create_appは、アプリケーションファクトリ関数です。チュートリアルの後半で追加しますが、すでに多くのことができます。
app = Flask(__ name__、instance_relative_config = True)は、Flaskインスタンスを作成します。
__name__は、現在のPythonモジュールの名前です。アプリは、いくつかのパスを設定するためにその場所を知る必要があり、__ name__はそれを伝える便利な方法です。
DATABASEは、SQLiteデータベースファイルが保存されるパスです。これはapp.instance_pathの下にあります。これは、Flaskがインスタンスフォルダ用に選択したパスです。
@ app.route()は簡単なルートを作成するため、チュートリアルの残りの部分に入る前にアプリケーションが動作しているのを確認できます。 URL / helloと、URL/helloにアクセスしたとき応答を返す関数「Hello、World!」を作成します。

Run the Application
これで、flaskコマンドを使用してアプリケーションを実行できます。

とコマンドを入力するとサーバーが起動してアプリが実行されます。=の前後にはスペースを入れない様に注意して下さい。

コマンドを実行するときはflask-tutorialディレクトリで実行してください。flaskrディレクトリで実行すると動作しません。
またflask runで動作しない場合はpython -m flask runコマンドを試してみて下さい。
ブラウザで http://127.0.0.1:5000/hello にアクセスしてHello World!と表示されればOKです。
 

うまくいかない場合(Error the file/path)
上記のFlaskのサイトのTutorialの通りに__init__.pyを作成して実行しても以下の様なエラーで出てうまく動かないことがあります。
Error: The file/path provided (flaskr) does not appear to exist.
Please verify the path is correct.  If app is not on PYTHONPATH, ensure the extension is .py

そのような時は以下のGtiHubから__init__.pyをダウンロードして実行してみてください。
GitHub flask example tutorial flaskr

こちらの__init__.pyはtutorialを最後までやった完成バージョンなので今の段階では不要なコードも含まれています。
39行目from flaskr import auth, blogからreturn app までのコードはコメントアウトして下さい。(return appは必要なのでコメントアウトしないように)

今回はここまでにしたいと思います。次回はデータベースを設定していきます。

 

    上に戻る