一尘不染

flask蓝图静态目录不起作用?

flask

根据Flask自述文件,可以在以下位置访问蓝图静态文件blueprintname/static。但是由于某种原因,它不起作用。

我的蓝图是这样的:

app/frontend/views.py

frontend = Blueprint('frontend', __name__, 
                     template_folder='templates',
                     static_folder='static')

@frontend.route('/') etc...
  • app/frontend/js/app.js :我的javascript
  • 在Flask应用中注册的蓝图(路由工作及所有内容)
    当我转到时abc.com/frontend/static/js/app.js,它只会显示404。

当我按照Flask自述文件获取静态文件时:

<script src="{{url_for('frontend.static', filename='js/app.js')}}"></script>

输出是

<script src="/static/js/app.js"></script>

这也不起作用。我的根app/static/文件夹中没有任何内容。

我无法访问蓝图中的任何静态文件!Flask读过我说,它应该可以工作!

admin = Blueprint('admin', __name__, static_folder='static')

默认情况下,路径的最右边部分是它在网络上公开的位置。由于此文件夹在此处称为静态,因此可以在蓝图+ / static的位置使用。假设蓝图已为/ admin注册,则静态文件夹将位于/ admin / static。


阅读 1272

收藏
2020-04-06

共2个答案

一尘不染

我在static_url_path参数中包含一个参数,以确保Blueprint的静态路径不会与主应用程序的静态路径冲突。

例如:

admin = Blueprint('admin', __name__, static_folder='static', static_url_path='/static/admin')
2020-04-06
一尘不染

你可能已将自己的蓝图注册为网站的根目录:

app.register_blueprint(core, url_prefix='')

但“ static蓝图”中的视图与你所有其他“蓝图”视图没有什么不同;它使用该url_prefix值使URL唯一。

该核心 static观点也积极,所以你现在有要处理两条路线/static/的URL。因此,如果你要在没有URL前缀的情况下注册蓝图,则必须给这两个之一提供唯一的路径。

给Blueprint一个自定义static_url_path值,或者给核心Flask app

2020-04-06