今天刚开始看blueprint模块,然后做了一个十分简单的示例——分为两个模块,用户user和管理员admin两个块,分别为这两个块定义了一个user_blue和admin_blue蓝图实例,然后在主文件app.py中注册两个蓝图实例。
问题就来了:除了主文件app.py中定义的路由可用,user_blue和admin_blue定义的路由都不可用,结果就是访问这里面的路由出现404 not found错误。
如下图所示
图片中的红色标注部分user是user_blue定义的url_prefix(我的理解是路由前缀),蓝色标注部分是user_blue装饰下的路由login。
这里就举这一个例子,其他的所有页面都是这样子的问题,都是404。
然后在网上查了好久,解决方法有很多,但是对我都不适用。
晚上不经意间看到一篇博客
https://blog.csdn.net/spider_py/article/details/100532617
虽然文章不是讲的这个问题,但是文中提到了一个点就是views.py文件的导入。
我的views.py是在myadmin和user文件夹的init.py文件中导入的,而且是在init.py文件的开头,这样子虽然没报错,但是无法访问路径。
具体原因,我现在暂未知晓,请大佬们留言说明一下,感谢。
这是我示例项目的目录
解决方法一:将views.py文件导入到主文件app.py中,导入之后views字体是未使用的“灰色”,这是正确的。
但是必须导入,相应的蓝图实例才能知道具体的路由是怎样的。
app.py文件具体实现如下:
from flask import Flask
from myadmin import admin_blue, views
from user import user_blue, views
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
app.register_blueprint(admin_blue)
app.register_blueprint(user_blue)
if __name__ == '__main__':
app.run(debug=True)
解决方法二:将views.py导入到init.py文件中,但不是开始部分,而是在最后结束部分👇
文件user/init.py具体实现如下
from flask import Blueprint
admin_blue = Blueprint('user', __name__, url_prefix='/user')
from . import views
修改之后,就可以正常访问了👇。
今天的blueprint就先到这,再次恳请知道以上问题的大牛们给出指导,万分感谢。
当然也欢迎大家留言交流。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)