FlaskとSQLAlchemyで読書記録Webアプリを作る(2)
前回、読書記録Webアプリで利用するモジュールの概略をご説明しましたので、今回から具体的にWebアプリの作成に入っていきましょう。
まずは、Flaskホームページのクイックスタートに掲載されている最小規模のアプリケーション例からご紹介します。
FlaskでHello World!を表示する
予めpip install flask
等でFlaskをインストールしておきます。そして、ファイル名をhello.py
とでもして、以下のスクリプトを書きます。
# hello.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return "Hello World!" if __name__ == '__main__': app.run()
これだけです。ターミナルからpython hello.py
と実行します。
$ python hello.py * Running on http://127.0.0.1:5000/
すると上記のように表示されますので、ブラウザのアドレス入力欄にhttp://127.0.0.1:5000/
を入力します。”Hello World!”と出力されました。おめでとうございます。簡単に作成できました。この気軽さがFlaskの良いところですね。
上記のスクリプトでやっていることは以下の通りです。
まず、 flaskからFlask クラスをインポートし、次にFlaskインスタンスを生成します。
そして、route() デコレータを使用し、関数を起動するURLをFlaskインスタンスに教えます。今回は、routeの中が/
なので、実行後にhttp://127.0.0.1:5000/
を入力すると、デコレータの次に記載の関数が呼び出され、Hello World!
という文字列が返されます。
最後に runメソッドを使い、ローカルサーバー上でアプリケーションを実行します。if __name__ == '__main__':
は、そのスクリプトがPyrhonから直接実行されたときだけ、 そのサーバ上で動くことになります。モジュールとして他のプログラムからインポートされたときにはapp.run()は実行されません。
読書記録Webアプリの構成を考える
簡単にFlaskアプリが作成できることを確認できましたところで、読書記録Webアプリの作成に取り掛かっていきます。 まず、最初に全体の構成を見てみましょう。
books.py config.py web/ __init__.py forms.py models.py app.db books/ views.py templates/ base.html books/ index.html each_book.html register_book.html (以下は、いずれ追加していきます) authors/ publishers/ searches/
ファイル/ディレクトリ名 | 説明 |
---|---|
books.py | 本アプリの実行用のファイル。中身は非常にシンプル |
config.py | 各種設定を格納しておくファイル。init.pyで各種設定を記述しても良いが、config.pyに設定を外出ししておくと、init.pyファイルがすっきりする。 |
web/init.py | 本アプリを立ち上げた際に、最初に実行され、様々なコンポーネントを読み込む |
web/forms.py | 書籍名など、ユーザー入力用のフォームを定めるもの |
web/models.py | データベースのテーブル構成を定めるもの。テーブルに相当するクラスを定義しておきます。ここできちんと定義しておくと、sqlalchemy等により、簡単にsqlite3等にテーブルが生成されます。 |
web/app.db | sqlite3データベースです。どのフォルダ下に作るのかについては、上記のconfig.pyで指定しておきます。 |
web/books/views.py | 本アプリのURLとそのURLを指定した場合に実行するスクリプトを記述するファイルです。routeデコレータでurlを指定し、その直後に関数を記述するようにします。webフォルダ直下にviews.pyをおいても良いのですが、今回は、書籍だけでなく、著者や発行者も入力できるようにするつもりですので、書籍を入力する場合のviews.pyだと分かるようにbooksフォルダ傘下にviews.pyを置いています |
web/templates/ | このtemplatesの傘下には、htmlファイルを基本的に配置します。booksというフォルダを作成したのは、この後、書籍だけでなく、著者は発行者についても登録、削除等を行うようにしたいので、同じような名称のhtmlファイルができるので、予めフォルダで分けておきたいと思っているからです。 |
さて、具体的に次回からコーディングの例をご紹介していきますね。