python - Flask中register_blueprint注册Blueprint的疑问
PHP中文网
PHP中文网 2017-04-17 18:01:00
[Python讨论组]

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中文网

认证高级PHP讲师

全部回复(1)
怪我咯

其实这不是 flask 的问题,归根到底还是 python 的import问题。

题主要理解register_blueprint 这个函数接受的参数是什么,很明显,应该是 BluePrint 的对象,那么如果你将你的:

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

修改成:

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

这里的 admin 是一个模块,而不是 BluePrint 对象,教程上可以直接使用:

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

是因为它的 admin 本来就是 Blueprint 对象,如果你这里要直接传一个变量的话,应该这么写:

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

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

我修改了两句,分别是:

from web.controller.admin import bapp
...
app.register_blueprint(bapp, url_prefix='/admin')

这样就对了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号