3

如何使用 Flask 默认 static/ 目录之外的 Flask-Assets 捆绑资产?

  • 我已将npm install资产下载到bower_components/
  • 我还有其他存在于javascripts/
  • 我正在使用 Flasks 应用程序工厂模式,无论我如何尝试配置 Flask-Assets - 我都无法绕过assets instance not bound to an application, and no application in current context异常。

任何帮助将不胜感激,特别是如果您可以给我一个关于如何在您的应用程序静态/目录之外管理原始 + 打包资产的示例:P

应用结构

app/
    static/
    __init__.py
    assets.py
javascripts/
    app.js
bower_components/
    jquery.js
    jquery,pjax,js

应用程序/assets.py

from flask.ext.assets import Bundle, Environment

js = Bundle(
    'bower_components/jquery.js',
    'bower_components/jquery.pjax.js',
    'javascripts/app.js'
    filters='jsmin',
    output='static/packed.js'
)

assets = Environment()

assets.register('js_all', js)

应用程序/初始化.py

from flask import Flask
from app.assets import assets

app = Flask(__name__)
assets.init_app(app)
4

1 回答 1

1

我检查了 Flask-Assets 源并在FlaskResolver类的文档字符串中找到了这个:

如果Environment.load_path设置了 a ,则用于查找源文件,替代 Flask 系统。蓝图前缀不再被解析。

所以你需要在 app/init.py 中进行如下操作:

from os.path import abspath, join

app = Flask(__name__)
assets.load_path = abspath(join(app.root_path, '..'))
assets.init_app(app)
于 2013-11-09T10:33:46.350 回答