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')
这样用的,我哪里写错了吗?
怪我咯2017-04-17 18:03:00
其實這不是 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')
這樣就對了。