将静态文件整理到绝对路径

kef*_*hou 5 python absolute-path flask

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

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

{% assets "all_js" %}
    <script type="text/javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}
Run Code Online (Sandbox Code Playgroud)

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

<script type="text/javascript" src="/static/public/all.580e5dae.js"></script>
Run Code Online (Sandbox Code Playgroud)

sha*_*k3r 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
Run Code Online (Sandbox Code Playgroud)