无法在Flask中获取正确的url_for静态文件

时间:2015-12-23 19:08:17

标签: flask static-files

我有一个可以做我需要的网络服务器,但为了开发应用程序,我希望我的一些静态文件可以在本地提供。 例如,我有/Desktop/project_folder/static/jsons/example.json。 我试试:

print(url_for('static', filename='jsons/example.json'))
/static/jsons/example.json

我得到的是/static/jsons/example.json。

我尝试通过以下方式设置static_path:

app = Flask(__name__, static_folder='/Desktop/project_folder/static')
print(app.static_folder)
/Desktop/project_folder/static
url = url_for('static', filename='jsons/example.json')
print(url)
/static/jsons/example.json

我在这里检查了几十个类似的问题,他们都建议调整static_folder或static_url_path,但这些都没有帮助 - 我只是开始在我的静态文件夹中的所有其他资源上获得404错误。我也试过send_from_directory,但我得到的是werkzeug.wrappers.Response对象,我无法从中获取数据。

更新: 我尝试加载这个json:

json_loaded = json.load(requests.get(url).text)

并收到错误消息:MissingSchema:无效的网址' /static/jsons/example.json':未提供架构。

1 个答案:

答案 0 :(得分:1)

您需要告诉请求文件所在的位置。路径不够。您还需要包含方案和域,主机名或IP地址。只有端口是可选的。

requests.get('http://example.com/path/to/file')

由于您使用url_for为您生成网址,因此您需要告诉它为您提供此信息。

url_for('static', filename='jsons/example.json', _external=True)