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='欢迎您')