2012-03-01 48 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') }}