蓝图装饰并注册后,url_map中没有相关路由

问题背景:写一个小demo,模块较多,需要蓝图管理。

项目结构大致如下:

├── app
│   ├── auth
│   │   ├── __init__.py
│   │   └── views.py
└── app.py

问题描述:在auth/__init__.py中定义了蓝图,在auth/views.py中引入蓝图,用它装饰了视图函数。在app.py中注册之后,开始运行,浏览器显示404,打印url_map,没有该蓝图装饰的路由。

代码如下:

auth/__init__.py

from flask import Blueprint

authbp=Blueprint('auth',__name__)

auth.views.py

from auth import authbp

@authbp.route('/login/',methods=['GET','POST'])
def login():

app.py

from auth import authbp

app.register_blueprint(authbp,url_prefix='/auth/')

问题定位:

定义及装饰过程没有错误,重点看注册。

注册过程参数正确,查看引入步骤。

引入时,直接从auth引入。从auth引入,相当于直接从auth/__init__.py引入。

此时的蓝图还未装饰视图函数。

总结根因:

蓝图定义时,并未将规则添加到defered_functions。此时直接注册,相当于调用add_url_rule,添加了空的规则。

修改:

引入装饰后的蓝图。

from auth.view import authbp

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值