2019年9月8日日曜日

[Python ] Flask + Blueprint で no attribute 'name'

サンプルを参考に Blueprint を始めてみたところ、エラーが発生した。

if blueprint.name in self.blueprints:
AttributeError: module '...' has no attribute 'name'


どうやら、同じエラーに直面した人も多い様子。

https://flask.palletsprojects.com/en/1.1.x/blueprints/

simple_page.py
simple_page = Blueprint('simple_page', __name__)

Flask側
app = Flask(__name__)
app.register_blueprint(simple_page)

このサンプルに限らず、同じ識別子の使いまわしのサンプルが多くて、誤誘導気味です。
register_blueprint() の引数に使っている simple_page は、モジュール名などではなくて、変数名です。

違和感ある設計ですね。。。