【问题标题】:How to use packaged assets with Flask-Assets如何将打包的资产与 Flask-Assets 一起使用
【发布时间】:2013-11-07 01:45:35
【问题描述】:

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

  • 我有npm install将资产下载到bower_components/
  • 我还有其他存在于javascripts/ 中的javascript
  • 我正在使用 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

app/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)

app/init.py

​​>
from flask import Flask
from app.assets import assets

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

【问题讨论】:

    标签: python flask webassets flask-assets


    【解决方案1】:

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

    如果设置了Environment.load_path,它用于查找源文件,替换 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多