ホームページ  >  に質問  >  本文

python - Flask中register_blueprint注册Blueprint的疑问

Flask版本:0.10.1
这个是一个

from flask import Blueprint

bapp = Blueprint('admin', __name__)

@bapp.route('/login')
def login():
    return 'login'

这个是运行的方法

#coding:utf-8
from flask import Flask
from entity import DBUtuis, User
from flask.templating import render_template
from web.controller import admin

app = Flask(__name__)
# 这个地方有疑问,不知道问什么一定要是admin.bapp
# 看到的代码例子上都是直接用模块名称就可以的
app.register_blueprint(admin.bapp, url_prefix='/admin')

#设置调试为true,可以不用重启既可以
app.debug = True

@app.route('/index')
def index():
    return render_template('index.html', name='huangteng')

if __name__ == "__main__":
    app.run()

疑问是必选要:

app.register_blueprint(admin.bapp, url_prefix='/admin'),

否则就报错:

'module' object has no attribute 'name'

问题是看教程上都是直接

app.register_blueprint(admin, url_prefix='/admin')

这样用的,我哪里写错了吗?

PHP中文网PHP中文网2742日前486

全員に返信(1)返信します

  • 怪我咯

    怪我咯2017-04-17 18:03:00

    実際、これは flask の問題ではなく、結局のところ、Python の import の問題です。

    質問の主な目的は、register_blueprint この関数がどのようなパラメーターを受け入れるかを理解することです。明らかに、これは BluePrint のオブジェクトである必要があるため、次のように記述します。 リーリー

    は次のように変更されました:

    リーリー

    ここでの

    admin オブジェクトではなく、モジュールです。チュートリアルで直接使用できます: BluePrint リーリー

    は、その

    が元々 admin オブジェクトであるため、ここに変数を直接渡したい場合は、次のように記述する必要があります。 リーリー Blueprint次の 2 つの文を修正しました:

    リーリー

    それだけです。

    返事
    0
  • キャンセル返事