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

默认情况下,路径的最右侧部分是它在 Web 上公开的位置。因为文件夹在这里称为 static,所以它将在蓝图 + /static 的位置可用。假设蓝图是为 /admin 注册的,静态文件夹将位于 /admin/static。

原文由 Patrick Yan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

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

例如:

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

原文由 brasqueychutter 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可能已将您的蓝图注册到站点的根目录:

 app.register_blueprint(core, url_prefix='')

但是蓝图中的 static 视图与所有其他蓝图视图没有区别;它使用 url_prefix 值来使 URL 唯一。

核心 static 视图 处于活动状态,因此您现在有两条路由要处理 /static/ URL。因此,如果您在没有 URL 前缀的情况下注册您的蓝图,则必须为这两者之一提供唯一路径。

给蓝图一个自定义的 static_url_path 值,或者核心 Flask app

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题