はじめに
- せめて2階層にわけたい
構成
│ svr.py
├─ apps
│ ├─ root.py
│ └─ hello.py
├─ templates
│ ├─ root.html
│ └─ hello.html
└─ static ...空
実行結果
app
[1]svr.py
from flask import Flask
# 分割先のコードをインポートする。appsはフォルダ名。
from apps import root
from apps import hello
app = Flask(__name__)
# 分割先のコントローラー(Blueprint)を登録する
app.register_blueprint(root.app) # /
app.register_blueprint(hello.app) # /hello
# 起動する
if __name__ == "__main__":
app.run(debug=True)
[2]root.py
# Blueprintをimportする
from flask import Blueprint
# render_template を追加
from flask import Flask, render_template
# "root"という名前でBlueprintオブジェクトを生成します
app = Blueprint('root', __name__)
# ルーティング処理を書きます
@app.route("/")
def root():
# render_template を使って root.html を表示
return render_template('root.html')
[3]hello.py
# Blueprintをimportする
from flask import Blueprint
# render_template を追加
from flask import Flask, render_template
# "hello"という名前でBlueprintオブジェクトを生成します
app = Blueprint('hello', __name__)
# ルーティング処理を書きます
@app.route("/hello")
def hello():
# render_template を使って hello.html を表示
return render_template('hello.html')
[4]root.html
<html>
<body>
<div>
this is root.
</div><div>
<a href="./hello">hello</a>
</div>
</body>
</html>
[5]hello.html
<html>
<body>
<div>
this is hello.
</div><div>
<a href="./">root</a>
</div>
</body>
</html>
参考(今日のレシピ)