Python Flask从root静态文件夹而不是blueprint的静态文件夹提供静态文件

时间:2014-04-21 23:16:23

标签: python flask

我的蓝图定义为:

auth_login = Blueprint('auth_login', __name__, template_folder='templates', static_folder='static', static_url_path='/static')

我将其注册为:

app.register_blueprint(auth_login, url_prefix='/user')

我有一条路线:

@auth_login.route('/<username>/')
def profile(username):
return render_template('profile/user.html',
username = username)

使用此设置,/ user / endpoint永远不会设法加载静态文件,

“GET /user//static/css/lib/bootstrap.min.css HTTP / 1.1”404 - “GET /user//static/css/lib/font-awesome/css/font-awesome.min.css HTTP / 1.1”404 -

我真正想要的是查看根应用程序的静态文件夹而不是蓝图,所以我希望它请求

“GET /static/css/lib/bootstrap.min.css HTTP / 1.1”200 -

是否可以通过static_folder或static_url_path进行配置,以便路由在根目录中查找静态文件,而不是相对于蓝图的安装位置?

1 个答案:

答案 0 :(得分:5)

默认情况下,Flask设置/static网址以提供{application_root}/static之外的文件 - 您覆盖默认使用您的蓝图代码。 (该网址仍为/static,但该文件夹为{application_root}/path/to/blueprint/static,根据事情的声音,这不是您想要的内容。

只需删除static_folder初始化的static_urlBlueprint参数,并且网址应该可以正常运行(假设您拥有适当的CSS) {application_root}/static文件夹。)