2012-03-01 859 views
29

可以为我的本地dev Flask实例添加更多静态路径吗? 我想要有默认的static文件夹来存储站点和另一个文件夹的js/css/images文件,例如designs保留我的特定资产。如果存在更好的解决方案,我不想将designs文件夹放在static的内部。本地Flask实例中有多个静态路径

回答

31

我一直在使用以下方法:

# Custom static data 
@app.route('/cdn/<path:filename>') 
def custom_static(filename): 
    return send_from_directory(app.config['CUSTOM_STATIC_PATH'], filename) 

CUSTOM_STATIC_PATH变量在我的配置中定义。

而且在模板:

{{ url_for('custom_static', filename='foo') }} 

买者自负 - 我真的不知道它是否是安全的;)

+5

在我眼里这是最定制的版本,但你应该使用'WERKZEUG。 utils.secure_filename'来检查文件名。 – Jarus 2012-03-08 17:00:50

+0

澄清任何人来'CUSTOM_STATIC_PATH'是我相信实际的文件夹名称路径。它不是一些特殊的键/变量......由于某种原因,我认为它是。 – 2012-10-29 23:24:04

+0

这就像一个魅力,谢谢! – 2014-03-20 06:10:51

26

您可以使用一个蓝图与它自己的静态目录 http://flask.pocoo.org/docs/blueprints/

蓝图

blueprint = Blueprint('site', __name__, static_url_path='/static/site', static_folder='path/to/files') 
app.register_blueprint(blueprint) 

模板

{{ url_for('site.static', filename='filename') }}