from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello World"
if __name__ == "__main__":
app.run(debug=True)
@app.route()でデコレートすることによって()内のディレクトリにアクセスするとデーコレーとされたメソッドが実行されるようになります。この処理が紐付けの部分になります。route のメソッドには GET と POST がありデフォルトでは GET に設定されています。ここではホームディレクトリにアクセスした際に hello_world が実行される形となっています。実行するためにはpython app.pyを行い指定された host へ接続すると Hello World が表示されます。
このサンプルプログラムでは直接 Hello World と表示させていますがより複雑な表示をさせたいときに html と python を混同させることは可読性の観点からもあまり良くありません。そこであらかじめ html のテンプレートを作成し render_template を使用することで html と python の混同を防ぐことができます。html のテンプレートとして sample.html というファイルがあるとしたときに render_template を使用すると以下のように書くことができます。
ここで html ファイルについては詳しく載せませんが、ユーザー情報をフォームに送信する機能を持っているものとします。この時フォームに送信された情報を受け取りたい際にリクエストを使用します。html からはユーザー情報として first name と last name が POST 形式で送信されたとします。この時、送信された first name と last name を取得するためには以下のように書くことができます。
# app.py
from flask import Flask
# 分割したページのインポート
from Home import home
from Signup import signup
app = Flask(__name__)
# blueprintを登録
app.register_blueprint(home)
app.register_blueprint(signup)
if __name__ == "__main__":
app.run(debug=True)
このようにページごとにファイルを分けることができました。一度登録した blueprint は動的に削除することはできません。簡単なページを作成する際には blueprint を使用する必要はありませんが、複雑な Web ページや規模の大きな開発を行う際には管理を容易にするためにも blueprint が使われます。