Flask静态文件到绝对路径

时间:2013-11-04 19:33:33

标签: python flask absolute-path

是否有烧瓶功能或简单的方法将静态文件路径转换为磁盘上的绝对文件路径?例如,“/ static / css / style.css”需要根据应用程序或蓝图中定义的静态文件夹返回style.css的绝对路径。

为了澄清,我目前正在使用Flask-Asset。

{% assets "all_js" %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}

模板中的上述部分将在生产方面生成此部分。不使用相对路径的主要原因是我可以从无cookie域提供静态。

<script type="text/javascript" src="/static/public/all.580e5dae.js"></script>

3 个答案:

答案 0 :(得分:2)

我不清楚为什么你需要获取静态文件的路径,但无论如何,如果你查看Flask-Assets的实现,我认为你可以得到一些想法,它有代码可以找到来自应用程序和蓝图的静态文件,并以不同的方式处理它们。

也许您会发现Flask-Assets完全符合您的要求。

答案 1 :(得分:1)

简单的解决方法是 运用 'static/css/name_of_css.css'代替url_for('static', filename='name_of_css.css')

答案 2 :(得分:0)

import os
base_path = os.getcwd() # Replace this appropriately with your static folder path
# We shouldn't use 'static' twice if it is already there in the base_path
# as correctly pointed out by mark-hildreth
if os.path.basename(base_path) == 'static':
    file_path = os.path.normpath('/css/style.css')
else:
    file_path = os.path.normpath('/static/css/style.css')
abs_path = os.path.join(base_path+file_path)
if os.path.exists(abs_path): # Verifies existence of given path
    print abs_path