关于flask中蓝图遇到的问题

552 阅读1分钟

1.关于蓝图注册的路径问题:

from flask_script import Manager  # 这句代码要注意
from flask import Flask
from flask.ext.migrate import MigrateCommand, Migrate

from flask.ext.sqlalchemy import SQLAlchemy

from app.modules.login import login_blu
from config import Config
from app.modules.index import index_blu

# 传递给Flask类的__name__变量是一个Python预定义的变量,它表示当前调用它的模块的名字。
# 当需要加载相关的资源,Flask就使用这个位置作为起点来计算绝对路径
app = Flask(__name__)
app.register_blueprint(index_blu)
app.register_blueprint(login_blu)
app.config.from_object(Config)  # 从对象中加载配置
db = SQLAlchemy(app)
manager = Manager(app)
Migrate(app, db)
manager.add_command("db", MigrateCommand)

if __name__ == '__main__':
    manager.run()

代码路径如下:

会出现如下错误提示:
会说模板没有显示,这就很奇怪,我明明渲染了模板,当我把渲染模板那句改为return “111”,则网页正常显示,那么不是模板路径的问题就是其他的问题。最后发现是蓝图路径的问题。 这就涉及到flask中的__name__的问题了,name__表示当前模块的名字,作为路径的参照物,在这里我在manage.py中注册了蓝图,但是我在index下__init.py中定义了蓝图,在定义蓝图中也有__name__,所以当前蓝图的路径就是以app为参考的绝对路径,但是我注册蓝图时候是在项目文件夹下,与定义蓝图时不是一个模块,所以找不到app下templates文件夹。