render_template其实很智能了,平常的情况下是没问题的,但是和blueprint结合后,就带来了坑。
先说说描述问题吧。如果你的flask用了blueprint,然后在你的templates不管设置成什么名字,只要蓝图下的html模板文件和主templates下
的html模板文件重名,那么程序会使用主程序下的模板了!!!
比如下面的代码就会只请求主程序的
@app.route('/', methods=['Get'])
def index():
return render_template('index.html')
@bp.route('/', methods=['Get'])
def index():
return render_template('index.html')
、flask-login 用户管理
Login-Manager 实例创建好之后,并在工厂函数__init__.pfy文件中初始化:login_manager.init__app(app).
而Login-Manager.user_loader()装饰器放在了models.py数据库模型中,导致出现
No user_loader has been installed for this LoginManager. Add one with the 'LoginManager.user_loader' decorator这样的错误,后来将login-manager实例和装饰器放在一起后(__init__.py)中之后,解决问题
login_manager.init_app(app)
from app.models import User from app.models import load_user @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id))
@main.route('/') def index(): return render_template('index.html',title='欢迎您')

在使用Flask与Blueprint结合时,如果模板文件重名,程序会优先使用主程序的模板。此外,将LoginManager实例与`user_loader`装饰器分开初始化会导致错误。解决方法是将两者放在同一个文件(如`__init__.py`)中初始化。在配置过程中注意避免此类问题。
最低0.47元/天 解锁文章
4632

被折叠的 条评论
为什么被折叠?



