记录flask下的坑

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

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))


二、蓝本创建完成并在工厂函数__init__.py中注册后,运行项目出现404 NOT FOUND错误,原因是先注册了auth下的蓝本,而不是先注册的main下的蓝本,因为跟路由
@main.route('/')
def index():
     return render_template('index.html',title='欢迎您')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值